SQL SERVER 中常用函数
刚开始对于sql中的函数掌握不足,所以在项目编码时,即使简单的时间比较也要上网查询,所以立志要把sql 函数这一块吃透,这也是我为什么写这篇随笔的原因,本人刚刚涉入软件开发这一行,有什么不足,不对,不完善的地方,还望各位前辈多多指教,小女子不胜感激。
1、聚合函数
这个对于有sql 基础的人来说,实在再熟悉不过了,在这简单说明一下,sum,avg,max,min,count,聚合函数不统计值为null的行,我们可以通过distinct过滤掉重复的记录,也可以通过group by 分组。Count 函数不数带有 Null 字段的记录,除非使用星号,Count 将计算所有记录的总量,包括有 Null 的字段的记录。Count(*) 比 Count ([Column Name]) 快得多。不要将星号放在引号 (' ') 中。如果我们要对某个字段进行计数,在至少有一个字段的值不为 Null 的情况下, Count 函数只计算一个记录。如果全部的指定字段为 Null,没有记录会被计算。使用 (&) 分隔字段名,可以写成count('字段名[&字段名[&字段名...]')。
2、数学函数
ceiling(n):返回不小于n的最小整数
floor(n):返回不大于n的最大整数
round(m,n):四舍五入,n为小数的位数
rand:随机生成[0,1]之间的float类型值
sign(expr):当expr为整数、0、负数时分别返回1、0、-1
sqrt(expr):返回expr的平方根
abs(expr):返回expr的绝对值
power(expr,n):返回expr的n次方的值
3、字符串函数
字符串函数在处理字符串和类型转换中都起着非常重要的作用。
1) 字符串转换函数
a、ASCII(expr):返回expr的最左端的字符的ascii码值,如果expr是纯数字,如1234,则可以写成ascii(1234),但如果不是纯数字,如a1234,则必须加引号,如ascii('a1234');
b、CHAR(expr):将ascii码转换成字符,如果不存在ascii码为expr的字符,则返回null;
c、LOWER(expr):将expr全部转换为小写
d、UPPER(expr):将expr全部转换为大写
e、STR(expr,[length,[decimal]]):把数值型数据转换为字符型数据。
length 指定返回的字符串的长度,
decimal
指定返回的小数位数。如果没有指定长度,缺省的length 值为10,
decimal
缺省值为0。
当length 或者
decimal
为负值时,返回
NULL
;
当length 小于小数点左边(包括符号位)的位数时,返回length 个*;
先服从length ,再取
decimal
;
当返回的字符串位数小于length ,左边补足空格。
4、去空格函数
1)LTRIM():去左空格
2)RTRIM():去有空格
5、取子串函数
1)LEFT(expr,length):取字符串expr左边length个字符
2)RIGHT(expr,length):取字符串expr右边length个字符
3)SUBSTRING(expr,start,length):取字符串从第start个字符开始的length个字符
4)CHARINDEX ( expression1 , expression2 [ , start_location ] ) :用来在一段字符中搜索字符或者字符串,返回字符串中指定表达式的起始位置。其中expression1指定要查找的字符串,expression2是被搜索的字符串,start_location是从expression2的第几个字符开始搜索。例如,我们想查找莱昂纳多 迪卡普里奥Leonardo DiCaprio的姓,那么我们可以这样来写 select substring('Leonardo DiCaprio',charindex(' ','Leonardo DiCaprio') + 1,length('Leonardo DiCaprio')).
5)PATINDEX ( '%pattern%' , expression ):返回expression中'%pattern%'所在的位置,patten前后必须有%。如:
select patindex('%[d]%','rcrdsddddaadadffdr')
返回4,[]中d在字符串rcrdsddddaadadffdr的第一次出现的位置。
select patindex('%[cd]%','rcrdsdddrdaadadffdr')
返回2,[]中c,d在其中一个的位置,返回最先出现的这个位置,c在此字符串里第一次出现位置是2,而d是4,结果取最先的那个。
select patindex('%[sd]%','rcrdsdddrdaadadffdr')
返回4,[]中c,d在其中一个的位置,返回最先出现的这个位置,s在此字符串里第一次出现位置是5,而d是4,结果取最先的那个。
select patindex('%[^r]%','rrrdsdddrdaadadffdr')
返回4,除[]中的字符串的匹配字符,第一次出现d不在[^r]里,所以就找到第一次这位。
select patindex('%[^rd]%','rrrdsdddrdaadadffdr')
返回5,除[]中的字符串的匹配字符,第一次出现s不在[^rd]里,所以就找到第一次这位。
select patindex('%[^rsd]%','rrrdsdddrdaadadffdr')
返回11,除[]中的字符串的匹配字符,第一次出现a不在[^rsd]里,所以就找到第一次这位。
6、日期函数
日期函数的使用我会在下一篇中介绍。