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()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值