一、字符串函数
函数
|
参数
|
描述
|
示例
|
|
sql
|
结果
|
|||
datalength
|
string
|
返回字符串包含字符数,但不包含后面的空格
|
select datalength('abcdefghijklmnopqrstuvwxyz'
|
26
|
substring
|
char_expr, start, length
|
截取字符串char_expr
|
select substring('abcdefghijklmnopqrstuvwxyz', 3, 6)
|
'cdefgh'
|
right
|
char_expr, int_expr
|
返回字符串右边int_expr个字符
|
select right('abcdefghijklmnopqrstuvwxyz', 6)
|
'uvwxyz'
|
left
|
char_expr, int_expr
|
返回char_expr左起 int_expr个字符。
|
select left('abcdefghijklmnopqrstuvwxyz', 6)
|
'abcdef'
|
ltrim
|
char_expr
|
把字符串头部的空格去掉。
|
select ltrim(' dsdd')
|
'dsdd'
|
rtrim
|
char_expr
|
把字符串尾部的空格去掉。
|
select rtrim('asdbf ')
|
'asdbf'
|
str
|
float_expr,length,decimal
|
把数值型数据转换为字符型数据
length 指定返回的字符串的长度(默认10)
decimal 指定返回的小数位数(默认0)
当length 或者decimal 为负值时,返回NULL;
当length 小于小数点左边(包括符号位)的位数时,返回length 个*;
先服从length ,再取decimal ;
当返回的字符串位数小于length ,左边补足空格。
|
select str(10, 1) ==>'*'
select str(10, 2) ==>'10'
select str(10, 3) ==>' 10'
|
|
upper
|
char_expr
|
转为大写
|
select upper('abcdefg')
|
'ABCDEFG'
|
lower
|
char_expr
|
转为小写
|
select lower('ABCDEFG')
|
'abcdefg'
|
space
|
int_expr
|
生成int_expr个空格
|
select space(6)
|
' '
|
replicate
|
char_expr,int_expr
|
复制字符串int_expr次
|
select replicate('abcd',3)
|
'abcdabcdabcd'
|
reverse
|
char_expr
|
反转字符串
|
select reverse('abcdefg')
|
'gfedcba'
|
stuff
|
char_expr1,start,length,char_expr2
|
将字符串char_expr1中的从 start开始的length个字符用char_expr2代替
|
select stuff('abcdefghijklmn', 3, 4, '0')
|
'ab0ghijklmn'
|
ascii |
char
|
将字符转ASCII码
|
select ascii('a')
|
97
|
char
|
ascii
|
将ASCII码转字符
|
select char(97)
|
'a'
|
charindex
|
char_expr,expression
|
返回char_expr的起始位置
|
select charindex('a', 'abchdgakdha')
|
1
|
patindex
|
"%pattern%",expression
|
返回指定模式的起始位置,否则为0
|
select patindex('%abc%', 'slksjabcfgjaksabcsjh')
|
6
|
二、数学函数
函数
|
参数
|
描述
|
示例
|
|
sql
|
结果
|
|||
abs
|
numeric_expr
|
求绝对值
|
select abs(-6)
|
6
|
ceiling
|
numeric_expr
|
取大于等于指定值的最小整数
|
select ceiling(12.1)
|
13
|
avg
|
numeric_expr
|
取平均数
|
select avg(orderno) from hmodule
|
4
|
exp
|
float_expr
|
取指数
|
|
|
floor
|
numeric_expr
|
小于等于指定值得最大整数
|
select floor(12.7)
|
12
|
pi
|
|
3.1415926.........
|
|
|
power
|
numeric_expr, power
|
返回power次方
|
select power(2, 3)
|
8
|
rand
|
|
随机数产生器
|
select rand()
|
|
round
|
numeric_expr,int_expr
|
按int_expr规定的精度四舍五入
|
select round(12.372, 1)
|
12.400
|
sign
|
int_expr
|
根据正数,0,负数,,返回+1,0,-1
|
select sign(-9)
|
-1
|
sqrt
|
float_expr
|
平方根
|
select sqrt(9)
|
3
|
三、日期时间函数
函数
|
参数
|
描述
|
示例
|
|
sql
|
结果
|
|||
getdate
|
|
返回日期
|
select getdate()
|
'2021-04-06 17:38:53.453'
|
getutcdate
|
|
获取utc时间
|
select getutcdate()
|
'2021-04-06 09:39:36.040'
|
day
|
date_expr
|
取出天
|
select day(GETDATE())
|
6
|
month
|
date_expr
|
取出月
|
select month(GETDATE())
|
4
|
year
|
date_expr
|
取出年
|
select year(GETDATE())
|
2021
|
datename
|
datepart,date_expr
|
返回名称
|
select datename(month, GETDATE())
select datename(WEEKDAY, GETDATE())
select datename(WEEK, GETDATE())
|
04
星期二
15(一年中的第几周)
|
datepart
|
datepart,date_expr
|
取日期一部份
|
select datepart(year, GETDATE())
select datepart(WEEKDAY, GETDATE())
select datepart(WEEK, GETDATE())
|
2021
3(实际是星期二)
15(一年中的第几周)
|
datediff
|
datepart, date_expr1.dateexpr2
|
日期差
|
select datediff(MONTH, GETDATE(), GETDATE()+36)
|
1
|
dateadd
|
datepart,number,date_expr
|
返回日期加上 number
|
|
|
datepart含义:
日期部分
|
缩写
|
备注
|
year
|
yy, yyyy
|
年
|
quarter
|
qq, q
|
季度
|
month
|
mm, m
|
月
|
dayofyear
|
dy, y
|
一年中的第几天
|
day
|
dd, d
|
日
|
week
|
wk, ww
|
一年中的第几周
|
weekday
|
dw日期部分返回对应于星期中的某天的数,例如:Sunday =1
|
星期几
|
Hour
|
hh
|
小时
|
minute
|
mi, n
|
分钟
|
second
|
ss, s
|
秒
|
millisecond
|
ms
|
毫秒
|
四、系统其他函数
函数
|
参数
|
描述
|
示例
|
|
sql
|
结果
|
|||
suser_name
|
|
用户登录名
|
select suser_name()
|
admin
|
user_name
|
|
用户在数据库中的名字
|
select user_name()
|
dbo
|
user
|
|
用户在数据库中的名字
|
select user
|
|
五、类型转换函数
函数
|
参数
|
描述
|
示例
|
|
sql
|
结果
|
|||
convert
|
数据类型[(长度),表达式 [,样式]
|
将一种数据类型的表达式显式转换为另一种数据类型的表达式;
长度:如果数据类型允许设置长度,可以设置长度,例如 varchar(10);
样式:用于将日期类型数据转换为字符数据类型的日期格式的样式。
|
|
|
cast
|
表达式 AS 数据类型[(长度)]
|
将一种数据类型的表达式显式转换为另一种数据类型的表达式。
|
select cast(123 as nvarchar)
|
'123'
|
select '年龄:' + cast(23 as nvarchar)
|
'年龄:23'
|
|||
select CAST('2021-04-07 09:40:38' as DATETIME)
|
2021-04-07 09:40:38.000
|
Style ID
|
Style 格式
|
示例
|
|
sql
|
结果
|
||
100 或者 0
|
mon dd yyyy hh:miAM (或者 PM)
|
select CONVERT(VARCHAR(19),GETDATE())
|
'04 7 2021 9:27AM'
|
select CONVERT(VARCHAR(19),GETDATE(), 0)
|
'04 7 2021 9:27AM'
|
||
select CONVERT(VARCHAR(19),GETDATE(), 100)
|
'04 7 2021 9:27AM'
|
||
101
|
mm/dd/yy
|
select CONVERT(VARCHAR(10),GETDATE(), 101)
|
'04/07/2021'
|
select CONVERT(DATETIME, '04/07/2021', 101)
|
2021-04-07 00:00:00.000
|
||
102
|
yy.mm.dd
|
select CONVERT(VARCHAR(10),GETDATE(), 102)
|
'2021.04.07'
|
select CONVERT(DATETIME, '2021.04.07', 102)
|
2021-04-07 00:00:00.000
|
||
103
|
dd/mm/yy
|
|
|
104
|
dd.mm.yy
|
|
|
105
|
dd-mm-yy
|
|
|
106
|
dd mon yy
|
|
|
107
|
Mon dd, yy
|
|
|
108
|
hh:mm:ss
|
|
|
109 或者 9
|
mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
|
|
|
110
|
mm-dd-yy
|
|
|
111
|
yy/mm/dd
|
|
|
112
|
yymmdd
|
|
|
113 或者 13
|
dd mon yyyy hh:mm:ss:mmm(24h)
|
|
|
114
|
hh:mi:ss:mmm(24h)
|
|
|
120 或者 20
|
yyyy-mm-dd hh:mi:ss(24h)
|
select CONVERT(VARCHAR(19),GETDATE(), 120)
|
'2021-04-07 09:36:59'
|
121 或者 21
|
yyyy-mm-dd hh:mi:ss.mmm(24h)
|
|
|
126
|
yyyy-mm-ddThh:mm:ss.mmm(没有空格)
|
|
|
130
|
dd mon yyyy hh:mi:ss:mmmAM
|
|
|
131
|
dd/mm/yy hh:mi:ss:mmmAM
|
|
|
六、系统函数
函数
|
参数
|
描述
|
示例
|
|
sql
|
结果
|
|||
newid
|
|
返回一个GUID(全局唯一表示符)值
|
select newid()
|
'877640C9-E367-4BE6-B05B-8F0BD8C36243'
|
isnumeric
|
任意表达式
|
判断表达式是否为数值类型或者是否可以转换成数值。
是:返回1,
不是:返回0
|
select isnumeric(1111)
|
1
|
select isnumeric('123rr')
|
0
|
|||
select isnumeric('123')
|
1
|
|||
isnull
|
任意表达式1,任意表达式2
|
如果任意表达式1不为NULL,则返回它的值;否则,在将任意表达式2的类型转换为任意表达式1的类型(如果这两个类型不同)后,返回任意表达式2的值。
|
select isnull(null, '字符串')
|
'字符串'
|
select isnull('', '字符串')
|
''
|
|||
isdate
|
任意表达式
|
确定输入表达式是否为有效日期或可转成有效的日期;
是:返回1,
不是:返回0
|
select isdate(getdate())
|
1
|
select isdate('2021-04-02')
|
1
|
|||
select isdate('999')
|
0
|
七、排名函数
函数
|
参数
|
描述
|
示例
|
|
sql
|
结果
|
|||
row_number
|
|
为结果集内每一行进行编号,从1开始后面行依次加1,常用于产生序号;
|
select row_number() over(order by id desc) as [NO], modulename from dbo.hmodule
|
八、聚合函数
函数
|
参数
|
描述
|
示例
|
|
sql
|
结果
|
|||
count
|
表达式
|
返回组中的总条数,count(*)返回组中所有条数,包括NULL值和重复值项,如果抒写表达式,则忽略空值,表达式为任意表达式。
|
select COUNT(1) from hmodule where moduletype=1
|
7
|
max
|
表达式
|
返回组中的最大值,空值将被忽略,表达式为数值表达式,字符串表达式,日期。
|
select MAX(num) from num_table
|
9
|
min
|
表达式
|
返回组中的最小值,空值将被忽略,表达式为数值表达式,字符串表达式,日期。
|
select MIN(num) from num_table
|
1
|
sum
|
表达式
|
返回组中所有值的和,空值将被忽略,表达式为数据表达式。
|
select SUM(num) from num_table
|
74
|
avg
|
表达式
|
返回组中所有值的平均值,空值将被忽略,表达式为数据表达式。
|
select AVG(num) from num_table
|
4
|