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()
相關文章
相關標籤/搜索