MySQL 函数
文本
LENGTH()/LEN():返回字符串长度
LOWER():将字符串转换为小写
LEFT():返回左的边字符串
RIGHT():返回右边的字符串
LTRIM():去掉字符串左边的空格
RTRIM():去掉字符串右边的空格
数值
ABS():绝对值
EXP():指数值
COS():余弦
SIN():正弦
TAN():正切
PI():圆周率
SQRT():平方根
():
日期
NOW():当前时间
YEAR():年
MONETH():月
MONTHNAME():月份的单词
DAYOFMONTH():日
TIMESTAMPDIFF():时间差
DATE_SUB()
位运算
很多时候利用位运算的特性可以存储更多的数据,节省磁盘空间;而 MySQL 提供了一系列函数方便我们做进制转换。
函数 | 说明 |
---|---|
BIN(num) | 返回十进制 num 的二进制表示 |
OCT(num) | 返回十进制 num 的八进制表示 |
HEX(num) | 返回十进制 num 的十六进制表示 |
CONV(num,X,Y) | 返回 X 进制 num 的 Y 进制表示,X 和 Y 的范围是 2-36 |
BIT_COUNT(num) | 返回十进制 num 在二进制情况下包含几个 1 |
BIN
返回十进制 num 的二进制表示1
select bin(3);
OCT
返回十进制 num 的八进制表示1
select oct(10);
HEX
返回十进制 num 的十六进制表示1
select hex(20),hex(11);
CONV
返回 X 进制 num 的 Y 进制表示,X 和 Y 的范围是 2-361
select conv(5,10,2),conv(101,2,10),conv(10,10,8);
BIT_COUNT
返回十进制 num 在二进制情况下包含几个 11
select bit_count(2),bin(2);
窗口函数
开窗函数、分析函数,类似于分组聚合,结合 COUNT、SUM、MIN、MAX、AVG 等聚合函数使用1
函数 OVER ( PARTITION BY 列 ORDER BY 列 ASC)
网站点击的 PV、UV;银行账号交易流水
边界
ROWS BETWEEN
PRECEDING:往前
FOLLOWING:往后
CURRENT ROW:当前行
UNBOUNDED:无边界
UNBOUNDED PRECEDING:从起的起点
UNBOUNDED FOLLOWING:从后的重点
排名函数
ROW_NUMBER():按照顺序生成分组内记录的序列
RANK():按照顺序生成分组内记录的排名,排名相对会在名次中留下空位
DENSE_RANK():按照顺序生成分组内记录的排名,排名相对不会在名次中留下空位
NTILE():将分组数据按照顺序分片1
2#根据 RptDate 排序,给 AcctCode 分组并添加序列
ROW_NUMBER() OVER ( PARTITION BY AcctCode ORDER BY RptDate ASC)