平时工作中,一些初学开发的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()
--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 ,如需转载请自行联系原作者