SQL函数
一、字符串函数
Ⅰ. 长度与分析
datalength(Char_expr) --返回字符串包含字符数,但不包含后面的空格
substring(expression,start,length) --取字符串
right(char_expr,int_expr) --返回字符串右边int_expr个字符
left(char_expr,int_expr) --返回字符串左边int_expr个字符
Ⅱ. 字符操作类
upper(char_expr) --转为大写
lower(char_expr) --转为小写
space(int_expr) --生成int_expr个空格
replicate(char_expr,int_expr)--复制字符串int_expr次
reverse(char_expr) --反转字符串
stuff(char_expr1,start,length,char_expr2) --将字符串char_expr1中的从
--start开始的length个字符用char_expr2代替
ltrim(char_expr) --删除字符串左边的空格
rtrim(char_expr) --删除字符串右边的空格
ascii(char) --根据字符取ascii码
char(ascii) --根据ascii码取字符
Ⅲ. 字符查找
charindex(char_expr,expression) --返回char_expr的起始位置
patindex("%pattern%",expression) --返回指定模式的起始位置,否则为0
二、数学函数
trunc(45.923,1) --按指定精度截断十进制数,结果:45.9 ,此为oracle函数。
mod(1600,300) --求除法余数 ,结果:100。
abs(numeric_expr) --求绝对值。
ceiling(numeric_expr) --取大于等于指定值的最小整数(即向上取整)。
floor(numeric_expr) --小于等于指定值得最大整数(即向下取整)。
avg(numeric_expr)--取平均数。
exp(float_expr) --返回e的n次方。
pi() --3.1415926.........(即圆周率π)。
power(底数m,指数n) --返回m的n次方。
rand([int_expr]) --随机数产生器。
round(numeric_expr,int_expr) --按照int_expr规定的精度四舍五入。
sign(int_expr) --根据正数,零,负数,返回+1,0,-1。
sqrt(float_expr) --返回平方根。
三、日期函数
GetDate( ) --返回系统目前的日期与时间
DateDiff (datepart,date1,date2) --返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (datepart,number,date) --返回日期加上number
DatePart (datepart,date) --返回日期date中,datepart指定部分所对应的整数值
DateName (datepart,date) --返回日期date中,datepart指定部分所对应的字符串名称
datepart参数的设定值
值 | 缩写 | Access 和 ASP | 说明 |
---|---|---|---|
Year | Yy | yyyy | 年 1753 ~ 9999 |
Quarter | q | 季 1 ~ 4 | |
Month | Mm | m | 月1 ~ 12 |
Day of year | Dy | y | 一年的日数,一年中的第几日 1-366 |
Day | Dd | d | 日,1-31 |
Weekday | Dw | w | 一周的日数,一周中的第几日 1-7 |
Week | Wk | ww | 周,一年中的第几周 0 ~ 51 |
Hour | Hh | h | 时0 ~ 23 |
Minute | Mi | n | 分钟0 ~ 59 |
Second | Ss | s | 秒 0 ~ 59 |
Millisecond | Ms | - | 毫秒 0 ~ 999 |
四、系统其他函数
suser_name() --用户登录名
user_name() --用户在数据库中的名字
user --用户在数据库中的名字
show_role() --对当前用户起作用的规则
db_name() --数据库名
object_name(obj_id) --数据库对象名
col_name(obj_id,col_id) --列名
col_length(objname,colname) --列长度
valid_name(char_expr) --是否是有效标识符
五、类型转换函数
convert(data_type,expression[,style]) --将一种数据类型的表达式显式转换为另一种数据类型的表达式
--data_type 目标系统所提供的数据类型,如果没设置数据长度,默认为30
--expression:要处理的值,可以是任何有效的SQL Server表达式
--style:【可选参数】日期格式样式
str( float_expression [ length [ decimal ] ] --将数字数据转换为字符数据,返回值为char类型
--float_expression 要转换的数字数据
--length 转换完的数据长度,默认为10位
--decimal 小数点右边的位数
cast (expression AS data_type) --将一种数据类型的表达式显式转换为另一种数据类型的表达式
--expression 要处理的数据,可以是任何有效的SQL Server表达式
--AS 用于分隔两个参数
--data_type 目标系统所提供的数据类型,如果没设置数据长度,默认为30
六、系统函数
newid() --返回一个GUID(全局唯一表示符)值
isnumeric(expression)
--传入任意表达式,判断表达式是否为数值类型或者是否可以转换成数值;是返回1,不是返回0
isnull(check_expression , replacement_value)
--check_expression 将被检查是否为NULL的表达式
--replacement_value 当check_expression为NULL时返回的值,必须与check_expression为同一类型
七. 排名函数
over()
开窗函数,按照class分区
over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。
select ROW_NUMBER() OVER(partition by column1 order by column2) ROW_INDEX from Room
--按column1指定的字段进行分组排序,或者说按字段column2的值进行分组排序。
分析函数
ROW_NUMBER() --行号
RANK() --排名,例如1,2,2,4
DENSE_RANK() --密集排名,例如1,2,3,4
NTILE() -- 分组排名;ntile(10)就是分成6等分然后分成六个组并显示所在组的序号
八、排名函数
count() --返回组中的总条数,count(*)返回组中所有条数,包括NULL值和重复值项,如果是任意表达式,则忽略空值
max() --返回组中的最大值,空值将被忽略,表达式为数值表达式,字符串表达式,日期。
min() --返回组中的最小值,空值将被忽略,表达式为数值表达式,字符串表达式,日期。
sum() --返回组中所有值的和,空值将被忽略,表达式为数据表达式。
avg() --返回组中所有值的平均值,空值将被忽略,表达式为数据表达式。