平時工做中,一些初學開發的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()