SQL server函数大全Word格式文档下载.docx
《SQL server函数大全Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SQL server函数大全Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
ABCDEF'
)返回abcdef
返回大写字符数据转换为小写的字符表达式。
upper(字符串表达式)
selectupper('
abcdef'
)返回ABCDEF
返回小写字符数据转换为大写的字符表达式。
ltrim(字符串表达式)
selectltrim('
)返回abc
返回删除了前导空格之后的字符表达式。
rtrim(字符串表达式)
selectrtrim('
返回删除了尾随空格之后的字符表达式。
patindex(字符串表达式1,字符串表达式2)
selectpatindex('
%ab%'
123ab456'
)返回4
ab%'
)返回0
___ab%'
)返回1
___ab_'
在字符串表达式1中可以使用通配符,此字符串的第一个字符和最后一个字符通常是%。
%表示任意多个字符,_表示任意字符返回字符串表达式2中字符串表达式1所指定模式第一次出现的起始位置。
没有找到返回0
reverse(字符串表达式)
selectreverse('
abcde'
)返回edcba
返回指定字符串反转后的新字符串
space(整数表达式)
select'
a'
+space
(2)+'
b'
返回ab
返回由指定数目的空格组成的字符串。
Str(float型小数[,总长度[,小数点后保留的位数]])
selectstr(123.451)返回123(123前面有空格)
selectstr(123.451,3)返回123
selectstr(123.451,7,3)返回123.451
selectstr(123.451,7,1)返回123.5
selectstr(123.451,5,3)返回123.5
selectstr(123.651,2)返回**
返回由数字转换成的字符串。
返回字符数不到总长度的前面补空格,超过总长度的截断小数位。
如果需要截断整数位则返回**。
注意在截断时遵循四舍五入总长度。
它包括小数点、符号、数字以及空格。
默认值为10。
小数点后最多保留16位。
默认不保留小数点后面的数字
stuff
(字符串表达式1,开始位置,长度,字符串表达式2)
selectstuff('
2,2,'
123'
)返回a123def
在字符串表达式1中在指定的开始位置删除指定长度的字符,并在指定的开始位置处插入字符串表达式2。
返回新字符串
substring(字符串表达式,开始位置,长度)
selectsubstring('
2,2)返回bc
返回子字符串
replace(字符串表达式1,字符串表达式2,字符串表达式3)
Selectreplace('
abcttabchhabc'
)
返回123tt123hh123
用字符串表达式
3替换字符串表达式1中出现的所有字符串表达式2的匹配项。
返回新的字符串
2.日期和时间函数
函数名称
参数示例说明
dateadd(日期部分,数字,日期)
selectdateadd(year,45,'
1990-12-11'
返回2035-12-1100:
00:
00.000
selectdateadd(month,45,'
返回1994-09-1100:
selectdateadd(mm,45,'
selectdateadd(qq,12,'
返回1993-12-1100:
selectdateadd(hh,12,'
返回1990-12-1112:
selectdateadd(yy,-12,'
返回1978-12-1100:
返回给指定日期加上一个时间间隔后的新的日期值。
数字:
用于与指定的日期部分相加的值。
如果指定了非整数值,
则将舍弃该值的小数部分,舍弃时不遵循四舍五入。
日期:
指定的原日期
在此函数中
dw,dy,dd效果一样都表示天
datediff(日期部分,开始日期,结束日期)
selectdatediff(yy,'
2008-9-10'
返回两个指定日期的指定日期部分的差的整数值。
在计算时由结束日期减去开始日期
返回18
selectdatediff(mm,'
2007-12-11'
返回9
datename(日期部分,日期)
selectdatename(mm,'
)返回12
selectdatename(dw,'
)返回星期二
selectdatename(dd,'
)返回11
返回表示指定日期的指定日期部分的字符串。
dw表示一星期中星期几,wk表示一年中的第几个星期,dy表示一年中的第几天
datepart(日期部分,日期)
selectdatepart(mm,'
selectdatepart(dw,'
selectdatepart(dd,'
返回表示指定日期的指定日期部分的整数。
wk表示一年中的第几个星期
dy表示一年中的第几天,
dw表示一星期中星期几,返回整数默认1为星期天
getdate无参数
selectgetdate()
返回2009-04-2818:
57:
24.153
返回当前系统日期和时间。
Day(日期)
selectday('
返回一个整数,表示指定日期的天的部分。
等价于datepart(dd,日期)
month(日期)
selectmonth('
返回一个整数,表示指定日期的月的部分。
等价于datepart(mm,日期)
year(日期)
selectyear('
)返回2007
返回一个整数,表示指定日期的年的部分。
等价于datepart(yy,日期)
getutcdate
无参数
selectgetutcdate()
返回2009-04-2810:
返回表示当前的UTC(世界标准时间)时间。
即格林尼治时间(GMT)
3.日期部分(指定要返回新值的日期的组成部分。
下表列出了MicrosoftSQLServer2008可识别的日期部分及其缩写。
日期部分含义
缩写year年yy,yyyy
quarter季qq,q
month月mm,m
dayofyear天(请看函数中的说明)dy,y
day天(请看函数中的说明)dd,d
week星期wk,ww
weekday天(请看函数中的说明)dw,w
hour小时hh
minute分钟mi,n
second秒ss,s
millisecond毫秒ms
4.数学函数
abs(数值表达式)
selectabs(-23.4)返回23.4
返回指定数值表达式的绝对值(正值)
pi无参数
selectpi()返回3.14159265358979
返回π的值
cos(浮点表达式)
selectcos(pi()/3)返回0.5
返回指定弧度的余弦值
sin(浮点表达式)
selectsin(pi()/6)返回0.5
返回指定弧度的正弦值
cot(浮点表达式)
selectcot(pi()/4)返回1
返回指定弧度的余切值
tan(浮点表达式)
selecttan(pi()/4)返回1
返回指定弧度的正切值
acos(浮点表达式)
selectacos(0.5)返回.0471********
返回其余弦是所指定的数值表达式的弧度,求反余弦
asin(浮点表达式)
selectasin(0.5)返回0.523598775598299
返回其正弦是所指定的数值表达式的弧度,求反正弦
atan(浮点表达式)
selectatan
(1)返回0.785398163397448
返回其正切是所指定的数值表达式的弧度,求反正切
degrees(数值表达式)
selectdegrees(pi()/4)返回45
返回以弧度指定的角的相应角度。
radians(数值表达式)
selectradians(180.0)
返回3.1415926535897931
返回指定度数的弧度值。
注意如果传入整数值则返回的结果将
会省略小数部分
exp(浮点表达式)
selectexp(4)返回54.5981500331442
返回求e的指定次幂,e=2.718281…
log(浮点表达式)
selectlog(6)返回1.79175946922805
返回以e为底的对数,求自然对数。
Log10(浮点表达式)
selectlog10(100)返回2
返回以10为底的对数
ceiling(数值表达式)
selectceiling(5.44)返回6
selectceiling(-8.44)返回-8
返回大于或等于指定数值表达式的最小整数。
floor(数值表达式)
selectfloor(5.44)返回5
selectfloor(-8.44)返回-9
返回小于或等于指定数值表达式的最大整数。
power(数值表达式1,数值表达式2)
selectpower(5,2)返回25
返回数值表达式
1的数值表达式2次幂
sqrt(数值表达式)
selectsqrt(25)返回5
返回数值表达式的平方根
sign(数值表达式)
selectsign(6)返回1
selectsign(-6)返回-1
selectsign(0)返回0
表达式为正返回+1
表达式为负返回-1
表达式为零返回0
rand([整数表达式])
selectrand(100)返回0.715436657367485
selectrand()返回0.28463380767982
selectrand()返回0.0131039082850364
返回从0到1之间的随机float值。
整数表达式为种子,使用相同的种子产生随机数相同。
即使用同一个种子值重复调用RAND()会返回相同的结果。
不指定种子则系统会随机生成种子。
round(数值表达式[,长度[,操作方式]])
selectround(1236.555,2)返回1236.560
selectround(1236.555,2,1)返回1236.550
selectround(1236.555,0)返回1237.000
selectround(1236.555,-1)返回1240.000
selectround(1236.555,-1,1)返回1230.000
selectround(1236.555,-2)返回1200.000
selectround(1236.555,-3)返回1000.000
selectround(1236.555,-4)返回0.000
selectround(5236.555,-4)出现错误
selectround(5236.555,-4,1)返回0.000
返回一个数值,舍入到指定的长度。
注意返回的数值和原数值
的总位数没有变化。
长度:
舍入精度。
如果长度为正数,则将数值舍入到长度指定的小数位数。
如果长度为负数,则将数值小数点左边部分舍入到长度指定的长度。
注意如果长度为负数并且大于小数点前的数字个数,则将返回0。
如果长度为负数并且等于小数点前的数字个数且操作方式为四舍五入时,最前面的一位小于5返回0,大于等于5导致错误出现,如果操作方法不是四舍五入时则不会出现错误,返回结果一律为0。
操作方式:
默认为0遵循四舍五入,指定其他整数值则直接截断。
5.数据类型转换函数
(以下两种函数功能类似,但是convert在进行日期转换时还提供了丰富的样式,cast只能进行普通的日期转换)
函数名称参数示例描述
convert(数据类型[(长度)],表达式[,样式])
selectconvert(nvarchar,123)返回123
selectN'
年龄:
'
+convert(nvarchar,23)
返回年龄:
23(注意:
如果想要在结果中正确显示中
文需要在给定的字符串前面加上N,加N是为了使数据库识别Unicode字符)
selectconvert(nvarchar,getdate())
将一种数据类型的表达式显式转换为另一种数据类型的表达式。
如果数据类型允许设置长度,可以设置长度,例如varchar(10)样式:
用于将日期类型数据转换为字符数据类型的日期格式的样式。
见下表
返回0428200910:
21PM
selectconvert(nvarchar,getdate(),101)
返回04/28/2009
selectconvert(nvarchar,getdate(),120)
返回2009-04-2812:
22:
21
Selectconvert(nvarchar(10),getdate(),120)
返回2009-04-28
cast(表达式as数据类型[(长度)])
selectcast(123asnvarchar)返回123
年龄:
+cast(23asnvarchar)
23
日期类型数据转为字符数据类型的日期格式的部分样式表当两个不同数据类型的表达式用运算符组合后,数据类型优先级规则指定将优先级较低的数据类型优先转换为优先级较高的型。
如果此转换不是所支持的隐式转换,则返回错误。
当两个操作数表达式具有相同的数据类型时,运算的结果便为该数据类型。
如果需要把优先级高的数据类型转换优先级低的数据类型时需要使用数据类型转换函数进行显示转换。
SQLServer2005对数据类型使用以下优先级顺序(先高后低):
不带世纪数位(yy)
带世纪数位(yyyy)
标准
输入/输出-
0或100
默认设置monddyyyyhh:
miAM(或PM)1101
美国
mm/dd/yyyy2102ANSIyy.mm.dd3103
英国/法国
dd/mm/yy4104
德国
dd.mm.yy5105
意大利
dd-mm-yy120
ODBC规范
yyyy-mm-ddhh:
mi:
ss(24h)
1、用户定义数据类型(最高)2、sql_variant
3、xml
4、datetime
5、smalldatetime
6、float
7、real
8、decimal
9、money
10、smallmoney11、bigint
12、int
13、smallint
14、tinyint
15、bit
16、ntext
17、text
18、image
19、timestamp
20、uniqueidentifier
21、nvarchar(包括nvarchar(max))
22、nchar
23、varchar(包括varchar(max))
24、char
25、varbinary(包括varbinary(max))
26、binary(最低)
系统函数
newid无参数
selectnewid()
返回2E6861EF-F4DB-4FFE-85EA-638242F2E5F2
返回09BBDE6F-47C2-4E2E-81E8-AFC50592280C
返回一个GUID(全局唯一表示符)值
isnumeric(任意表达式)
selectisnumeric(1111)返回1
selectisnumeric('
123rr'
)返回1
判断表达式是否为数值类型或者是否可以转换成数值。
是返回1,不是返回0
isnull(任意表达式1,任意表达式2)
selectisnull(null,N'
没有值'
)返回没有值
selectisnull(N'
具体的值'
N'
返回具体的值
如果任意表达式
1不为NULL,则返回它的值;
否则,在将任意表达式
2的类型转换为任意表达式1的类型(如果这两个类型不同)后,返回任意表式
2的值。
isdate(任意表达式)
selectisdate(getdate())返回1
selectisdate('
1988-1-1'
198'
确定输入表达式是否为有效日期或可转成有效的日期。
排名函数
排名函数的常用使用格式:
函数名()over(orderby列名[asc|desc][,列名……])
注意:
返回结果集会根据使用排名函数时指定的列进行排序,因此不要在from子句后面再次使用orderby,会导致排名混乱。
参数示例描述
row_number无参数
selectroductID,[Name],ListPrice,row_number()
over(orderbyListPricedesc)asrankfromProduction.Product
为结果集内每一行进行编号,从1开始后面行依次加1。
rank无参数
selectProductID,[Name],ListPrice,rank()
over(orderbyListPricedesc)asrank
fromProduction.Product
如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名不连续。
例如,如果有价格最高的两种产品的价格相同,它们将列第一。
由于已有两行排名在前,所以具有下一个最高价格的产品将排名第三。
该排名等于该行之前的所有行数加一。
因此,RANK函数并不总返回连续整数。
dense_rank
select
ProductID,[Name],ListPrice,dense_rank()
如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名连续。
例如,如果有价格最高的两种产品的价格相同,它们将并列第一,下一个最高价格的产品将排名第二。
因此,DENSE_RANK函数返回的数字没有间断,并且始终具有连续的排名。
聚合函数
聚合函数对一组值执行计算,并返回单个值。
除了COUNT以外,聚合函数都会忽略空值。
聚合函数经常与SELECT语句的GROUPBY子句一起使用。
聚合函数的常用使用格式:
函数名([all|distinct]表达式)
all:
默认值,对所有的值进行聚合函数运算包含重复值。
distinct:
消除重复值后进行聚合函数运算。
函数名称示例描述
avg
SELECTavg(VacationHours)as'
平均休假小时数'
FROMHumanResources.Employee
WHERETitleLIKE'
VicePresident%'
返回25
返回组中各值的平均值。
空值将被忽略。
表达式为数值表达式。
count
SELECTcount(*)FROMProduction.Product返回504
SELECTcount(Color)FROMProduction.Product返回256
SELECTcount(distinctColor)FROMProduction.Product
返回组中的项数。
COUNT(*)返回组中的项数。
包括NULL值和重复项。
如果指定
表达式则忽略空值。
表达式为任意表达式。
min
selectmin(ListPrice)fromProduction.Product返回0
返回组中的最小值。
表达式为数值表达式,字符串表达式,日期。
max
selectmax(ListPrice)fromProduction.Product
返回3578.27
返回组中的最大值。
sum
SELECTsum(SickLeaveH