SQL Server基本函数
1. 字符串函数
1.1 datalength( char_expr ) ,返回表达式的字节数,不包含尾随空格
返回类型:如果 expression 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max) 数据类型,则返回 bigint;否则返回 int。null的datalength的结果是null.
1.2 len( char_expr ),返回表达式的字符数,不包含尾随空格
1.3 substring( char_expr, start, length ),在expression中取start位置开始length长度的字符串。字符串下标从1开始。
1.4 right( char_expr,int_expr ),返回表达式从起始位置(从右端开始)到指定字符位置(从右端开始计数)的部分;对比区分left()
1.5 isnull(check_expr,replace_value),如果check_expr为空,返回replaced的值,否则返回check_expr
1.6 upper(char_expr) 转为大写;反之lower(char_expr)转为小写
1.7 space(int_expr) 生成int_expr个空格
1.8 replicate(char_expr,int_expr)复制字符串int_expr次
1.9 reverse(char_expr) 反转字符串
1.10 stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从start开始的length个字符用char_expr2代替。start为负或超出char_expr1长度,则返回空字符串;length为负,返回空字符串
1.11 ltrim(char_expr)取掉左侧空格;反之rtrim(char_expr) 取掉右侧空格
1.12 ascii(char) 、char(ascii) 两函数对应,取ascii码,根据 ascii 码取字符
1.13 charindex(char_expr1,char_expr2[,start_location]),在char_expr2中找char_expr1的起始位置,如果没有给定start_location、或者给定值为负数或零,那么搜索将会开始于char_expr2的起始位置。
1.14 patindex("%pattern%",char_expr) 返回指定模式的起始位置,否则为0;pattern为一个文字字符串,可以使用通配符;但是pattern前后必须使用字符'%'(查找第一个或最后一个字符时除外)。示例:搜索其名称包含单词"apple"的产品的列表:select productName,patindex('%apple%',productName) from products
2. 数学函数
2.1 abs(numeric_expr) 求绝对值
2.2 ceiling(numeric_expr) 取大于等于指定值的最小整数
2.3 exp(float_expr) 取指数
2.4 floor(numeric_expr) 小于等于指定值得最大整数
2.5 pi() 3.1415926.........
2.6 power(numeric_expr,power) 返回power次方
2.7 rand([int_expr]) 随机数产生器
2.8 round(numeric_expr,int_expr) 按int_expr规定的精度四舍五入
2.9 sign(int_expr) 根据正数,0,负数,,返回+1,0,-1
2.10 sqrt(float_expr) 平方根
2.11 isnumeric(expr),如果输入表达式的计算值为有效的整数、浮点数、money或decimal类型时,返回1(指示可将expr至少转换为上述数值类型中的一种。),否则返回0。
3. 日期函数
3.1 getdate(),返回当前日期
3.2 datename(datepart, date_expr),返回指定日期指定日期部分的字符串
3.3 datepart(datepart, date_expr),返回指定日期指定日期部分的整数
3.4 datediff(datepart, startdate, enddate),日期差;提前五分钟提醒功能:select * from tbName where datediff('minute',col_date,getdate())>5
3.5 dateadd(datepart, number, date_expr),返回当前日期加上number之后的日期
3.6 convert(),可以日期转换
3.7 year(date_expr),获取年份;month()、day()
说明,上面函数中datepart的 写法,取值,意义 如下(写year、month、day等也是可以的):
yy 1753-9999 年份
mm 1-12 月
dy 1-366 日
dd 1-31 日
wk 1-54 周
dw 1-7 周几
hh 0-23 小时
mi 0-59 分钟
ss 0-59 秒
ms 0-999 毫秒
qq 1-4 刻
4.聚合函数
4.1 avg(),返回一组数值中所有非空数值的平均值
4.2 count(),返回一个列内所有非空值的个数。count(*)会忽略null值
4.3 min(),返回一个列范围内的最小非空值;max()与之相反。这两个函数可以用于大多数的数据类型,返回的值根据对不同数据类型的排序规则而定。如对于字符类型的值,结果以每个字符的ASCII值为顺序从左到右排序
4.4 sum(),返回一个列范围内所有非空值的总和
5. 系统函数
5.1 suser_name() 用户登录名
5.2 user_name() 用户在数据库中的名字
5.3 user 用户在数据库中的名字
5.4 show_role() 对当前用户起作用的规则
5.5 db_name() 数据库名
5.6 object_name(obj_id) 数据库对象名
5.7 col_name(obj_id,col_id) 列名
5.8 col_length(objname,colname) 列长度
5.9 valid_name(char_expr) 是否是有效标识符
6. 类型转换函数
6.1 cast()
6.2 convert()
6.3 str(float_expr [,length [,decimal] ] );返回由数字数据转换来的字符数据。length,总长度,包括小数点、符号、数字以及空格(默认值为10);decimal,小数点后的位数,decimal必须小于或等于16。超出则截断,只保留16位。
print str(12,3,0) --'12',length大于表达式的长度 print str(123,3,0) --'123',length等于表达式的长度 print str(1234,3,0) --'***',length小于表达式的长度 print str('13',2,0) --'13',表达式为字符串类型也可以执行该函数 ★ print str(123.456) --' 123',默认长度为10,只保留整数部分
6.4 char(int_expr);将int ASCII代码转换为字符;int_expr 介于0-255之间的整数,否则返回null值
char(9) --制表符 char(10) --换行符 char(13) --回车符 --使用char(13)在不同的行上输出姓名、电子邮件地址和电话号码,并以文本方式返回结果 select username,+char(13)+EmailAddress+char(13)+Phone from tb_user where id=1
--结果如下:
username
------------------------ -------------------------
张三
123456789@163.com
15981867756
7.其他标量函数
标量函数只对一个数值进行操作,并返回单个数值,标量函数分为以下几类:
系统函数、日期/时间函数、字符串函数、数学函数、图像和文本函数、安全函数、游标函数、数据元函数;
select '当前数据库名称'=db_name(), '当前数据库标识号'=db_id()
8. 嵌套函数(将一个函数的返回值传递给另一个函数,这称为嵌套函数调用,如下:)
select convert(varchar(20),getdate(),101)