SQL Server函数学习
--1.字符串函数函数
len(expression) Len() 字符串表达式的字符数(而不是字节),不计尾部空格,但计头部空格和中间的空格 datalength(Char_expr) 任何表达式的字节数,包括空格 substring(expression,start,length) 从start位置开始取出length长度的字符串 right(char_expr,int_expr) 返回字符串右边int_expr个字符 concat(str1,str2,...) 返回来自于参数连结的字符串。
SELECT ID,CreateTime,Name, len(Name) 字符个数, datalength(Name) 字节数, substring(Name,2,3) 取子串, right(Name,4) 取字符右侧n位字符, concat(ID,Name,ID) 连结的字符串 FROM TestTable
--2.字符操作类
upper(char_expr) 转为大写 lower(char_expr) 转为小写 UCase(string) 返回 Variant (String),其中包含转成大写的字符串。 LCase(string) 返回字符串的小写形式。 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) char(ascii) 两函数对应,取ascii码,根据ascii吗取字符 charindex(char_expr,expression) 返回char_expr的起始位置
SELECT ID,CreateTime,Name, lower(ID) 转为小写, reverse(Name) 反转字符串, replicate(ID,3) 复制字符串, stuff(Name,1,5,'咸鱼翻身 ') 替换字符串 FROM TestTable
3.日期,时间函数
getdate() 返回当前日期 datename(datepart,date_expr) 返回名称 datepart(datepart,date_expr) 取日期一部份 datediff(datepart,date_expr1.dateexpr2) 日期差 dateadd(datepart,number,date_expr) 返回日期加上 number
--函数中datepart的
--写法 取值和意义
--yy 1753-9999 年份
--qq 1-4 刻
--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 毫秒
SELECT ID,CreateTime,Name, getdate() 返回当前日期, datename(YYYY,CreateTime) 返回名称, datepart(HH,CreateTime) 取日期一部份, datediff(DD,CreateTime,getdate()) 日期差, dateadd(DD,5,CreateTime) 返回日期加上定义时间 FROM TestTable
日期转换 convert()
| Style ID | Style 格式 |
|---|---|
| 100 或者 0 | mon dd yyyy hh:miAM (或者 PM) |
| 101 | mm/dd/yy |
| 102 | yy.mm.dd |
| 103 | dd/mm/yy |
| 104 | dd.mm.yy |
| 105 | dd-mm-yy |
| 106 | dd mon yy |
| 107 | Mon dd, yy |
| 108 | hh:mm:ss |
| 109 或者 9 | mon dd yyyy hh:mi:ss:mmmAM(或者 PM) |
| 110 | mm-dd-yy |
| 111 | yy/mm/dd |
| 112 | yymmdd |
| 113 或者 13 | dd mon yyyy hh:mm:ss:mmm(24h) |
| 114 | hh:mi:ss:mmm(24h) |
| 120 或者 20 | yyyy-mm-dd hh:mi:ss(24h) |
| 121 或者 21 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
| 126 | yyyy-mm-ddThh:mm:ss.mmm(没有空格) |
| 130 | dd mon yyyy hh:mi:ss:mmmAM |
| 131 | dd/mm/yy hh:mi:ss:mmmAM |
--4.数学函数
abs(numeric_expr) 求绝对值 ceiling(numeric_expr) 取大于等于指定值的最小整数 exp(float_expr) 取指数 floor(numeric_expr) 小于等于指定值得最大整数 pi() 3.1415926......... power(numeric_expr,power) 返回power次方 rand([int_expr]) 随机数产生器 round(numeric_expr,int_expr) 安int_expr规定的精度四舍五入 sign(int_expr) 根据正数,0,负数,,返回+1,0,-1 sqrt(float_expr) 平方根
--5.聚合函数
COUNT 返回指定组中项目的数量。 MAX 返回指定数据的最大值。 MIN 返回指定数据的最小值。 SUM 返回指定数据的和,只能用于数字列,空值被忽略。 COUNT_BIG 返回指定组中的项目数量,与COUNT函数不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。 GROUPING 产生一个附加的列,当用CUBE或ROLLUP运算符添加行时,输出值为1.当所添加的行不是由CUBE或ROLLUP产生时,输出值为0. BINARY_CHECKSUM 返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。 CHECKSUM_AGG 返回指定数据的校验值,空值被忽略。 CHECKSUM 返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引。 STDEV 返回给定表达式中所有值的统计标准偏差。 STDEVP 返回给定表达式中的所有值的填充统计标准偏差。 VAR 返回给定表达式中所有值的统计方差。 VARP 返回给定表达式中所有值的填充的统计方差。
sqlserver group by 和mysql group by 区别 sqlserver 对于group by 是严格的,
全部要select出来的字段必须在group by后边出现,
不然会报“选择列表中的列 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。”
mysql的设计,当group by 字段和select 多字段是唯一的一个分组时,这样能提高效率。
但是如果不能唯一确定的话,mysql会随机选一个值。
SELECT ID,Max(CreateTime),Name FROM TestTable group by ID,Name

浙公网安备 33010602011771号