SQL Server常用的字符串/日期/系统函数

平时工作中,一些初学开发的developer朋友经常会发消息问SQL Server中的某某函数怎么用,大部分都是日期和字符串的,总结如下,没有总结的,可以直接查SQL Server的帮助文档,方便快捷。
--字符串函数 

--1,len和datalength函数 
declare @a varchar(50),@b char(30) 
select @a = '成都cd',@b='gocean' 
--select @a as 姓名 
print @a 
print len(@a) 
print datalength(@a) 
print @b 
print len(@b) 
print datalength(@b) 

--2,substring,right,left 
declare @a varchar(50) 
set @a = 'microsoft' 
print substring(@a,2,3) 
print right(@a,4) 
print left(@a,5) 

--3,trim,rtrimm,ltrim 
declare @a nvarchar(30),@b nchar(30) 
set @a = '     dog' 
set @b = '     dog' 
print len(@a) 
print rtrim(@a) 
print ltrim(@a) 
print len(rtrim(@a)) 
print len(ltrim(@a)) 
print datalength(@a) 
print datalength(@b) 

--char varchar 在存储英文字符和数字的时候都按一个字节存储 


--4,ascii,char 
declare @a varchar(10),@b int 
set @a = 'abc' 
set @b = 48 -- 0-9 :48-57, a-z:97-122 
print ascii(@a) --返回字符串表达式中最左侧的字符的ASCII码值 
--print ascii(@a) + '12' 
--print ascii(SUBSTRING(@a,len(@a),1)) 
--print ascii(right(@a,1)) 
print char(@b)  --将整型的ASCII码值转换为字符 

--5,nchar,unicode 
declare @a nvarchar(10),@b int 
set @a = 'xyz' 
set @b = 49 -- 0-9 :48-57, a-z:97-122 
print unicode(@a) --返回字符串表达式中最左侧的字符的unicode码值 
print nchar(@b)  --将整型的unicode码值转换为字符 

--6,lower upper 
declare @a varchar(20),@b char(30) 
set @a = 'micRosofT' 
set @b = 'MicroSoFt' 
print @a 
print lower(@a) 
print @b 
print upper(@b) 


--7,charindex 返回字符串中制定表达式的开始位置 
select '开始位置' = charindex('计算机','成都金海洋计算机科技发展有限公司'
--select charindex('计算机','成都金海洋计算机科技发展有限公司') 开始位置 
declare @strIndex varchar(20) 
set @strIndex = '成都金海洋计算机科技发展有限公司' 
select charindex('计算机',@strIndex) 开始位置1,charindex('计算机','成都金海洋计算机科技发展有限公司') 开始位置2 

--8,space(返回重复的空格组成的字符串), replicate(以指定的次数重复表达式) 
select replicate('*',10),space(10),replicate('SQL Server',2),space(10),replicate('*',10) 
print replicate('*',10) + space(10) + replicate('SQL Server',2) + space(10) + replicate('*',10) 

--9,reverse 反转字符串 
declare @a varchar(30) 
set @a = 'Microsoft' 
print @a 
print reverse(@a) 

--10,stuff 替换字符串 
declare @a varchar(50) 
set @a = '你好,四川' 
print stuff(@a,4,1,'成都'
print stuff(@a,4,2,'成都'
print stuff(@a,4,5,'成都'

--11,replace 
select replace('我想去中国','中国','成都'as 目的地 

--12,quotename 
select quotename('hello','{}'
select quotename('hello','[]'
select quotename('hello'

--13, str(浮点表达式,[长度,[小数]])    其中长度包括小数点,符号,数字和空格,长度默认值为10,小数默认位数为0 
declare @a int,@b decimal(4,2) 
set @a = 25 
set @b = 36.59 
--print @b 
print str(@a,len(cast(@a as varchar(30)))) 
--print str(@a,len(cast(@a as varchar(30))),0) 
print str(@b,5,2) 
print len(str(@a)) 
print len(str(@b,5,2)) 


--日期函数 

--1,getdate year,month,day 
select getdate(),year(getdate()),month(getdate()),day(getdate()) 
    
--2,datediff    返回值为integer类型 
select 'gocean的年龄是:' + cast(datediff(yy,'1996/10/03',getdate()) as char(2)) + '岁' as 信息 --根据生日取多少岁 
select datediff(yy,'1982/11/23',getdate()) 
select datediff(mm,'1982/11/23',getdate()) 
select datediff(dd,'1982/11/23',getdate()) 

--3,datename 
print datename(yy,getdate())--年 
print datename(mm,getdate())--月 
print datename(dd,getdate())--日 

print datename(hh,getdate())--时 
print datename(mi,getdate())--分 --print datename(n,getdate()) 
print datename(ss,getdate())--秒 
print datename(ms,getdate())--毫秒    
print datename(hhmmss,getdate()) 

Select CONVERT(varchar(100), GETDATE(), 24)--取日期 
Select CONVERT(varchar(100), GETDATE(), 23)--取时间 
--1900-01-01 02:30:00.000 

Select cast('15:30' as datetime--自动加上1900-01-01 
Select len(CONVERT(varchar(100), cast('1900-01-01 02:30:00.000' as datetime), 24)) --长度 
Select CONVERT(varchar(100), cast('1900-01-01 02:30:00.000' as datetime), 24) --取日期 
select CONVERT(varchar(10), getdate(), 120)--取日期 

select cast('1900-01-01 02:30:31.000' as smalldatetime--smalldatetime精确到1分钟,大于等于30秒,向分钟进1分钟,小于30秒舍去 


print datename(w,getdate())--星期几 
print datename(dw,getdate())--星期几 
print datename(ww,getdate()) --当前年的第多少周 


print datename(qq,getdate())-- 刻钟 
print datename(y,getdate()) -- 当前年的第多少天 
print datename(dy,getdate()) --当前年的第多少天 



--4,datepart 
print datepart(yy,getdate())--年 
print datepart(mm,getdate())--月 
print datepart(dd,getdate())--日 

print datepart(hh,getdate())--时 
print datepart(mi,getdate())--分 --print datepart(n,getdate()) 
print datepart(ss,getdate())--秒 
print datepart(ms,getdate())--毫秒    

print datepart(w,getdate())--星期几 
print datepart(dw,getdate())--星期几 
print datepart(ww,getdate()) --当前年的第多少周 


print datepart(qq,getdate())-- 刻钟 
print datepart(y,getdate()) -- 当前年的第多少天 
print datepart(dy,getdate()) --当前年的第多少天 


--系统综合函数 
select newid(),host_id(),host_name(),user_name() 
--版本查询 
select @@version 
select @@version,@@servername,@@servicename,@@language,@@max_connections 
SELECT    SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition'


declare @a varchar(30) 
set @a = '1241242' 
declare @b int 
set @b = convert(int,@a) 
--set @b = cast(@a as int) 
print @b 



--数学函数 
print pi() 
print power(2,3) 
print sin(30*pi()/180) 
print abs(-20) 
print sqrt(2) 
print sqrt(9) 
print rand() 
















本文转自terryli51CTO博客,原文链接:http://blog.51cto.com/terryli/684362 ,如需转载请自行联系原作者

上一篇:成为hbase社区国内第20个committer


下一篇:52 个深度学习目标检测模型汇总,论文、源码一应俱全!