首页 > 代码库 > sql常用函数总结
sql常用函数总结
函数名称 | 参数 | 示例 | 说明 |
ascii | (字符串表达式) | select ascii(‘abc‘) 返回 97 | 返回字符串中最左侧的字符的 ASCII码。 |
char | (整数表达式) | select char(100) 返回 d | 把ASCII 码转换为字符。 介于 0 和 255 之间的整数。如果该整数表达式不在此范围内,将返回 NULL 值。 |
charindex | (字符串表达式1,字符串表达式2[,整数表达式]) | select charindex(‘ab‘,‘BCabTabD‘)返回3 select charindex(‘ab‘,‘BCabTabD‘,4)返回6 | 在字符串2中查找字符串1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串1和字符串2中有一个是null则返回null。 可以指定在字符串2中查找的起始位置。 |
difference | (字符串表达式1,字符串表达式2) | select difference(‘Green‘,‘Greene‘)返回4 | 返回一个0到4的整数值,指示两个字符表达式的之间的相似程度。0 表示几乎不同或完全不同,4表示几乎相同或完全相同。注意相似并不代表相等 |
left | (字符串表达式,整数表达式) | select left(‘abcdefg‘,2) 返回 ab | 返回字符串中从左边开始指定个数的字符。 |
right | (字符串表达式,整数表达式) | select right(‘abcdefg‘,2) 返回fg | 返回字符串中从右边开始指定个数的字符。 |
len | (字符串表达式) | select len(‘abcdefg‘)返回 7 select len(‘abcdefg ‘) 返回7 | 返回指定字符串表达式的字符数,其中不包含尾随空格。 |
lower | (字符串表达式) | select lower(‘ABCDEF‘)返回 abcdef | 返回大写字符数据转换为小写的字符表达式。 |
upper | (字符串表达式) | select upper(‘abcdef‘)返回 ABCDEF | 返回小写字符数据转换为大写的字符表达式。 |
ltrim | (字符串表达式) | select ltrim(‘ abc‘)返回 abc | 返回删除了前导空格之后的字符表达式。 |
rtrim | (字符串表达式) | select rtrim(‘abc ‘)返回 abc | 返回删除了尾随空格之后的字符表达式。 |
patindex | (字符串表达式1,字符串表达式2) | select patindex(‘%ab%‘,‘123ab456‘)返回4 select patindex(‘ab%‘,‘123ab456‘)返回0 select patindex(‘___ab%‘,‘123ab456‘)返回1 select patindex(‘___ab_‘,‘123ab456‘)返回0 | 在字符串表达式1中可以使用通配符,此字符串的第一个字符和最后一个字符通常是%。 %表示任意多个字符,_表示任意字符 返回字符串表达式2中字符串表达式1所指定模式第一次出现的起始位置。没有找到返回0 |
reverse | (字符串表达式) | select reverse(‘abcde‘)返回 edcba | 返回指定字符串反转后的新字符串 |
space | (整数表达式) | select ‘a‘+space(2)+‘b‘ 返回 a b | 返回由指定数目的空格组成的字符串。 |
str | (float型小数[,总长度[,小数点后保留的位数]]) | select str(123.451)返回 123(123前面有空格) select str(123.451,3)返回123 select str(123.451,7,3)返回123.451 select str(123.451,7,1)返回123.5 select str(123.451,5,3)返回123.5 select str(123.651,2)返回** | 返回由数字转换成的字符串。返回字符数不到总长度的前面补空格,超过总长度的截断小数位。如果需要截断整数位则返回**。 注意在截断时遵循四舍五入 总长度。它包括小数点、符号、数字以及空格。默认值为 10。 小数点后最多保留16位。默认不保留小数点后面的数字 |
stuff | (字符串表达式1,开始位置,长度,字符串表达式2) | select stuff(‘abcdef‘,2,2,‘123‘) 返回 a123def | 在字符串表达式1中在指定的开始位置删除指定长度的字符,并在指定的开始位置处插入字符串表达式2。返回新字符串 |
substring | (字符串表达式,开始位置,长度) | select substring(‘abcdef‘,2,2)返回bc | 返回子字符串 |
replace | (字符串表达式1,字符串表达式2,字符串表达式3) | select replace(‘abcttabchhabc‘,‘abc‘,‘123‘) 返回 123tt123hh123 | 用字符串表达式3替换字符串表达式1中出现的所有字符串表达式2的匹配项。返回新的字符串
|
日期和时间函数
函数名称 | 参数 | 示例 | 说明 |
dateadd | (日期部分,数字,日期) | select dateadd(year,45,‘1990-12-11‘) 返回 2035-12-11 00:00:00.000 select dateadd(month,45,‘1990-12-11‘) 返回1994-09-11 00:00:00.000 select dateadd(mm,45,‘1990-12-11‘) 返回1994-09-11 00:00:00.000 select dateadd(qq,12,‘1990-12-11‘) 返回1993-12-11 00:00:00.000 select dateadd(hh,12,‘1990-12-11‘) 返回1990-12-11 12:00:00.000 select dateadd(yy,-12,‘1990-12-11‘) 返回1978-12-11 00:00:00.000 | 返回给指定日期加上一个时间间隔后的新的日期值。 数字:用于与指定的日期部分相加的值。如果指定了非整数值,则将舍弃该值的小数部分,舍弃时不遵循四舍五入。 日期:指定的原日期 在此函数中 dw,dy,dd效果一样都表示天 |
datediff | (日期部分,开始日期,结束日期) | select datediff(yy,‘1990-12-11‘,‘2008-9-10‘) 返回 18 select datediff(mm,‘2007-12-11‘,‘2008-9-10‘) 返回 9 | 返回两个指定日期的指定日期部分的差的整数值。 在计算时由结束日期减去开始日期 在此函数中 dw,dy,dd效果一样都表示天 |
datename | (日期部分,日期) | select datename(mm,‘2007-12-11‘)返回12 select datename(dw,‘2007-12-11‘)返回星期二 select datename(dd, ‘2007-12-11‘)返回11 | 返回表示指定日期的指定日期部分的字符串。 dw表示一星期中星期几,wk表示一年中的第几个星期 dy表示一年中的第几天 |
datepart | (日期部分,日期) | select datepart(mm,‘2007-12-11‘)返回12 select datepart(dw,‘2007-12-11‘)返回3 select datepart(dd, ‘2007-12-11‘)返回11 | 返回表示指定日期的指定日期部分的整数。 wk表示一年中的第几个星期 dy表示一年中的第几天, dw表示一星期中星期几,返回整数默认1为星期天 |
getdate | 无参数 | select getdate() 返回2009-04-28 18:57:24.153 | 返回当前系统日期和时间。 |
day | (日期) | select day(‘2007-12-11‘)返回11 | 返回一个整数,表示指定日期的天的部分。 等价于datepart(dd, 日期) |
month | (日期) | select month(‘2007-12-11‘)返回12 | 返回一个整数,表示指定日期的月的部分。 等价于datepart(mm, 日期) |
year | (日期) | select year(‘2007-12-11‘)返回2007 | 返回一个整数,表示指定日期的年的部分。 等价于datepart(yy, 日期) |
getutcdate | 无参数 | select getutcdate() 返回2009-04-28 10:57:24.153 | 返回表示当前的 UTC(世界标准时间)时间。即格林尼治时间(GMT) |
|
|
|
|
|
|
|
|
日期部分
(指定要返回新值的日期的组成部分。下表列出了 Microsoft SQL Server 2005 可识别的日期部分及其缩写。)
日期部分 | 含义 | 缩写 |
year | 年 | yy, yyyy |
quarter | 季 | qq, q |
month | 月 | mm, m |
dayofyear | 天(请看函数中的说明) | dy, y |
day | 天(请看函数中的说明) | dd, d |
week | 星期 | wk, ww |
weekday | 天(请看函数中的说明) | dw, w |
hour | 小时 | hh |
minute | 分钟 | mi, n |
second | 秒 | ss, s |
millisecond | 毫秒 | ms |
好用的例子:
6.1计算一个月第一天的SQL 脚本:SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
6.2一年的第一天的SQL 脚本:SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
6.3本周的星期一的SQL 脚本: SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
6.4 季度的第一天的SQL 脚本:SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
6.5当天的半夜的SQL 脚本:SELECT DATEADD(dd,DATEDIFF(dd,0,getdate()), 0)
6.6上个月的最后一天的SQL 脚本:SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()), 0))
6.7去年的最后一天的SQL 脚本:SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()), 0))
6.8本月的最后一天的SQL 脚本: SELECTdateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
6.9 本年的最后一天的SQL 脚本: SELECTdateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
6.10本月的第一个星期一的SQL 脚本:select DATEADD(wk,DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
sql常用函数总结