#函数-- 字符串,时间,数学,系统,聚合
--------------------------字符串函数----------------------------------
-
ascii(字符串) 返回最左侧的字符的ASCII码
SELECT ascii( ‘ssfs’ ) --返回:115,PS:里面不管写多少都只识别第一个 -
char(ASCII码) 把ASCII码转换为字符
SELECT CHAR ( 0 ) --返回:s
–PS:介于0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回NULL 值。 -
charindex(字符串1,字符串2[,n]) 返回字符串的位置
SELECT charindex( ‘a’, ‘abcdef’ ) --返回:1
SELECT charindex( ‘b’, ‘abcdef’, 4 ) --返回:0
–PS:因为是从第四位开始找的所以找不到就返回0 -
difference(字符串1,字符串2) 寻找差异与不同
SELECT difference( ‘dbce’, ‘abcdef’ ) --返回4
–PS:俩个字符串从头开始寻找差异 查看有多少系统 注意:相似不代表相同 -
left(字符串,n)从左截取字符串
SELECT LEFT ( ‘abgashba’, 3 ) --返回:abg -
right(字符串,n)从右截取字符串
SELECT RIGHT ( ‘asfhvah’, 3 ) --返回:vah -
len(‘字符串’) 字符串的长度 最后的空格不算
SELECT len( ‘gioi 胜’ ) --返回:5 -
lower(‘字符串’) 字母转换为小写
SELECT LOWER ( ‘jaAj’ ) --返回:jaaj -
upper(‘字符串’)
SELECT UPPER ( ‘djAa’ ) --返回:DJAA -
ltrim(‘字符串’) 返回的字符串修饰前面的空格
SELECT ltrim( ’ abcd ’ ) --返回:abcd空格 -
rtrim(‘字符串’) 返回的字符串修饰后面的空格
SELECT rtrim( ’ abcd ’ ) --返回:空格abcd -
patindex(‘字符串’,‘字符串’) 按照正则表达式 查找位置
SELECT patindex( ‘%abc_’, ‘aaabcd’ ) --返回:3
–PS:这里的正则与like时的是一样的
-
reverse(‘字符串’) 把字符串顺序调反过来
SELECT reverse( ‘abcde’ );–返回:edcba -
space(n) 空格
SELECT ‘a’ + SPACE ( 2 ) + ‘c’ --返回:a空格*2c -
str(数字类型的表达式[,数字类型的表达式的总长度][,小数点后保留的位数])
SELECT str( 123.912, 7, 3 ) --返回:空格123.91
–注意:遵循四舍五入
–返回由数字转换成的字符串。返回字符数不到总长度的前面补
–空格,超过总长度的截断小数位。如果需要截断整数位则返回 -
stuff(字符串表达式1,开始位置,长度,字符串表达式2) 替换
SELECT stuff( ‘abcde’, 2, 2, ‘123’ ) --返回:a123de -
substring(字符串表达式,开始位置,长度) 截取
SELECT SUBSTRING ( ‘abcdef’, 3, 2 ) --返回:cd -
replace(字符串表达式1,字符串表达式2,字符串表达式3) 替换
SELECT replace( ‘abcdef’, ‘b’, ‘123’ ) --返回:a123cdef
----------------时间串函数------------------------------------
-
dateadd(日期部分,数字,日期) 添加指定的时间 并返回
SELECT dateadd( dd, 6, ‘2000-11-29’ ) --返回:2000-12-05 00:00:00.000 -
datediff(日期部分,日期,日期) 返回俩个日期之间的日期部分
SELECT datediff( dd, ‘2000-11-29’, ‘2000-12-6’ ) --返回:7 -
datename(日期部分,日期) 返回字符串格式的指定日期部分
SELECT datename( dw, ‘2000-11-29’ ) --返回:星期三 -
datepart(日期部分,日期) 返回整数格式的指定日期部分
SELECT datepart( dw, ‘2000-11-29’ ) --返回:4(星期三)因为星期天是1 -
getdate() 返回系统时间 精确到毫秒
SELECT getdate() --返回:2018-11-13 10:59:25.850 -
getutcdate() 返回UTC(世界标准时间)时间。即格林尼治时间
SELECT getutcdate() --返回:2018-11-13 03:03:49.770 -
日期部分全称(日期) 返回日期部分全称的筛检
SELECT YEAR ( ‘2000-12-06’ );–返回2000
SELECT MONTH ( ‘2000-12-06’ );–返回12
----------------数学函数------------------------------------
-
abs(数值表达式) 返回绝对值
SELECT abs( - 12 ) --返回:12 -
pi() 返回π的值
SELECT pi() --返回:3.14159265358979 -
cos(浮点表达式) 返回指定弧度的余弦值
SELECT
cos( pi() / 3 ) --返回:0.5 -
sin(浮点表达式) 返回指定弧度的正玹值
SELECT
sin( pi() / 6 ) --返回:0.5 -
cot(浮点表达式) 返回指定弧度的余切值
SELECT
cot( pi() / 4 ) --返回:1
–6. tan(浮点表达式) 返回指定弧度的正切值
SELECT
tan( pi() / 4 ) --返回:1 -
acos(浮点表达式) 返回其余弦是所指定的数值表达式的弧度,求反余弦
SELECT
acos( 0.5 ) --返回 1.0471975511966 -
asin(浮点表达式) 返回其正弦是所指定的数值表达式的弧度,求反正弦
SELECT
asin( 0.5 ) --返回 0.523598775598299 -
atan(浮点表达式) 返回其正切是所指定的数值表达式的弧度,求反正切
SELECT
atan( 1 ) --返回0.785398163397448 -
degrees(数值表达式) 返回以弧度指定的角的相应角度。
SELECT
degrees( pi() / 4 ) --返回:45 -
radians(数值表达式) 返回指定度数的弧度值。注意如果传入整数值则返回的结果将会省略小数部分
SELECT
radians( 180.0 ) --返回3.1415926535897931 -
exp(浮点表达式) 返回求 e 的指定次幂,e=2.71828182845905…
SELECT
exp( 2 ) --返回7.38905609893065 -
log(浮点表达式) 返回以 e 为底的对数,求自然对数。
SELECT
log( 6 ) --返回:1.79175946922805 -
log10(浮点表达式) 返回以 10 为底的对数
SELECT
log10( 1000 ) --返回:2 -
ceiling(数值表达式) 向上取整
SELECT
ceiling( 3.333 ) --返回:4
SELECT
ceiling( - 3.33 ) --返回:-3 -
floor(数值表达式) 向下取整
SELECT
floor( 3.333 ) --返回:3
SELECT
floor( - 3.33 ) --返回:-4 -
power(数值表达式1,数值表达式2) 返回数值表达式1的数值表达式2次幂
SELECT
power( 3, 3 ) --返回:27 -
sqrt(数值表达式) 返回数值表达式的平方根
SELECT
sqrt( 25 ) --返回:5 -
sign(数值表达式) 判断是不是正数的
SELECT
sign( - 9 ) --返回:-1
SELECT
sign( 0 ) --返回:0
SELECT
sign( 4 ) --返回:1
PS:正数就返回1 负数就返回-1 0就返回0 -
rand(整数表达式) 返回0-1之间随机float
SELECT
rand() --返回:0.28463380767982 (不一定是这个,因为是随机的) -
round(数值表达式[,小数点后的长度[,操作方式]]) 四舍五入
SELECT
round( 123.55, 1 ) --返回:123.60
SELECT
round( 123.555, 2, 1 ) --返回:123.550 对第三个参数意思就是只要不是0 就不四舍五入了 -
convert(数据类型[(长度)],表达式[,样式]) 转类型
SELECT CONVERT
( nvarchar, 123 ) --返回123
SELECT
N’年龄:’ + CONVERT ( nvarchar, 23 ) --返回年龄:23
----------------------系统函数--------------------------- -
newid 返回一个GUID(全局唯一表示符)值
SELECT
newid() --返回:C84DF39F-90AE-4AA6-8550-7BDF8F113EF7 -
isnumeric(任意表达式) 判断是不是数值类型
SELECT
isnumeric( 11 ) --返回:1
SELECT
isnumeric( ‘110’ ) --返回:1
SELECT
isnumeric( ‘110a’ ) --返回:0
PS:只要能转成(或者本就是)数值的都返回1 否则返回0 -
isnull(任意表达式1 ,任意表达式2 ) 判断是否为null的
SELECT
isnull( NULL, N’没有值’ ) --返回:没有值
SELECT
isnull( N’具体的值’, N’没有值’ ) --返回:具体的值 -
isdate(任意表达式) 判断是否为date格式
SELECT
isdate(
getdate()) --返回1
SELECT
isdate( ‘1988-1-1’ ) --返回1
SELECT
isdate( ‘198’ ) --返回0 -
排序开窗函数 row_number(行号) rank(排名) dense_rank(密集排名) ntile(分组排名)
SELECT
row_number () OVER ( ORDER BY StudentNo ), *
FROM
student ----------------------------聚合函数------------------ -
avg(列名) 平均值,空值会被忽略
SELECT AVG
( studentResult )
FROM
result --返回:85 -
count(列名) from student 返回行数。包括null与重复的值
SELECT COUNT
( * )
FROM
student --返回9 -
min(列名) 返回最小值
SELECT MIN
( studentResult )
FROM
result --返回:80 -
max(列名) 返回最大值
SELECT MAX
( studentResult )
FROM
Presult --返回:90
–5. sum(列名) 返回总合
SELECT SUM
( studentResult )
FROM
result --返回:170