日度归档:2018年7月12日

mssql sqlserver sqlserver 按年月对数据进行分组写法分享


摘要:
下文讲述三种sql脚本的写法,实现按年月对数据进行分类
实验环境:sql server 2008


实现思路:
方法1 :使用dateName获取年份和月份
方法2 :使用datepart获取年份和月份
方法3 :使用year month分别获取年份和月份 

 create table test(qty int,info varchar(30),
writeDate datetime)
go
insert into test(qty,writeDate) values
(1,'2017-2-1'),(10,'2017-3-1'),(21,'2017-6-1'),(12,'2017-8-1'),
(31,'2018-1-1'),(41,'2018-2-1'),(51,'2018-2-1'),(61,'2018-2-1')

---方法1:使用datename 
SELECT datename(YEAR,writeDate)+'-'+datename(MONTH,writeDate) as newInfo,
sum(qty) as qtyAll
  FROM test  group by  datename(YEAR,writeDate),datename(MONTH,writeDate)

---方法2:使用datepart
SELECT CONVERT(varchar(5),datepart(YEAR,writeDate))+'-'+RIGHT('0'+convert(varchar(5),datepart(MONTH,writeDate)),2) as newinfo,
sum(qty) as qtyAll
  FROM test  group by  datepart(YEAR,writeDate),datepart(MONTH,writeDate)

---方法3:使用year month函数
SELECT CONVERT(varchar(5),YEAR(writeDate))+'-'+convert(varchar(5),MONTH(writeDate)) as newinfo,
sum(qty) as qtyAll
  FROM test  group by  datepart(YEAR,writeDate),datepart(MONTH,writeDate)
go
truncate table test 
drop     table test 
mssql_sqlserver_按年月数据分组的三种方法分享

mssql_sqlserver_按年月数据分组的三种方法分享

mssql sqlserver sql脚本“区分大小写”写法设置方案


摘要:
下文讲述让sqlserver支持大小写的设置方法,如下所示:
sql server 2008 R2


  create table  test (keyId int,info varchar(88))
insert into test(keyId,info)
values(1,'maOMao365.com'),(2,'MaOmAo365.com')

--无大小写区分
select * from test WHERE info like '%maomao%'
--存在大小写区分的写法
select  * from test WHERE info like '%maomao%'
 collate Chinese_PRC_CS_AI
go

---方法1:我们可以通过修改列名的排序规则 使指定列名具有大小写区分
 --无大小写区分
ALTER TABLE test ALTER Column info varchar(88) collate Chinese_PRC_CI_AS     
--存在大小写区分  
ALTER TABLE test ALTER Column info  varchar(88) collate Chinese_PRC_CS_AS


---方法2:通过修改整个数据库的排序规则
--无大小写区分  
ALTER DATABASE [数据库名称] collate Chinese_PRC_CI_AS    
--存在大小写区分  
ALTER DATABASE [数据库名称] collate Chinese_PRC_CS_AS  


go
truncate table test 
drop table test


说明事项:
Chinese_PRC_代表对大陆字体的unicode排序:
_BIN 二进制排序_CI(CS) 是否区分大小写:CI不区分,CS区分
_AI(AS) 是否区分重音:AI不区分,AS区分   
_KI(KS) 是否区分假名类型:KI不区分,KS区分 
_WI(WS) 是否区分宽度:WI不区分,WS区分

mssql sqlserver 一条sql语句向表中插入多条记录的方法分享


摘要:
下文分享通过一条sql脚本向数据表中插入多条数据(添加多行、添加多条数据)的方法,如下所示:
实验环境:sql server 2008 R2


create table test(keyId int,info varchar(30))
go

---方法1:一次插入多条
insert into test(keyId,info)values
(1,'maomao365.com'),(2,'猫猫小屋'),(3,'猫星人'),
(4,'测试一次插入多条'),(5,'maomao365'),(6,'maomao365') 

---方法2:一次插入多条"虚拟数据表(包含多条数据)"
insert into test(keyId,info)
select 20,'a' union all
select 22,'b' union all
select 23,'c'
go

---方法3:通过虚拟一张多条数据表,然后插入表全部数据
declare @tmp table(keyId int,info varchar(30))
insert into @tmp(keyId,info)values(30,'d')
insert into @tmp(keyId,info)values(31,'e')
insert into @tmp(keyId,info)values(32,'f')  

insert into test(keyId,info)
select keyId,info from @tmp t 
go
select * from test 
go
truncate table test
drop table test 
mssql_sqlserver_一次插入多条记录的方法分享

mssql_sqlserver_一次插入多条记录的方法分享