MySQL内置函数
22. database函数
格式:database()
功能:返回当前数据库的名字
示例:
21. current_user函数
格式:current_user()
功能:返回当前连接的账号名
返回值:'user_name'@'host_name'
等价:CURRENT_USER
示例:
20. to_days函数
格式:to_days(date)
功能:返回日期对应的天数,计算从0000-00-00开始经过的天数
参数:date类型的日期值,MySQL会自动将两位数的年份转换成四位数的年份,即“95-08-25”和“950825”等价于“1995-08-25”
说明:date不可为1582年之前的日期
示例:
19. current_date函数
格式:current_date()
功能:返回当前日期
返回值:字符串上下文中返回"YYYY-MM-DD";数字上下文中返回"YYYYMMDD"
等价:CURDATE() CURRENT_DATE
示例:
18. floor函数
格式:floor(X)
功能:返回不大于X的最大整数
示例:
17. rand函数
格式:rand(N)
功能:返回一个随机浮点数,范围 [0, 1)
参数:N为随机数种子,可省略
◇ 若N为常量,则在执行前只初始化一次随机数种子
◇ 若N为非常量,例如字段名,则每次调用rand()时都用相应的值初始化一次种子
说明:
① 若N相同,则生成的随机数都一样
② 要获取 [i, j)之间的一个随机整数,可以使用floor(i + rand() * (j-i))
③ 当rand()用在where子句时,每行计算一次
示例:
获取 [7, 12)的随机整数
16. right函数
格式:right(str, len)
功能:返回字符串str右侧前len个字符
示例:
15. left函数
格式:left(str, len)
功能:返回字符串str左侧前len个字符
示例:
14. convert函数
格式:convert(str USING encode)
功能:将字符串「str」转换为「encode」编码
参数:「encode」为MySQL对应字符集的名字
示例:select convert("abc" USING utf8);
格式:convert(expr, type)
功能:将expr转换为type类型的结果
示例:select convert(1/3, decimal(4, 3));
13. cast函数
等同于convert(expr, type)
12. date_add函数
格式:date_add(time, INTERVAL expr unit)
功能:执行日期计算
参数:
time 起始时间,可为date或datetime类型
expr 间隔时间,将被加到time
unit 指定expr的单位
返回值:
① 以下情况,返回NULL
◇ 「time」为非法日期,如「2006-07-00」
◇ 「time」格式非法,如「201704-30」
② 以下情况,返回datetime
◇ 「time」为datetime
◇ 「time」为date,「unit」使用了「HOURS」「MINUTES」或「SECONDS」
③ 其它情况下,返回date
注意事项:
① 若expr对于unit来说太短,则高位补0
即 INTERVAL "01:45" MINUTE_MICROSECOND 等价于「00:01.000045」 0分1秒45微秒
② expr被视作字符串,因此为expr指定非字符串值时,需要小心
即 INTERVAL 6/4 HOUR_MINUTE 等价于 INTERVAL 1.5000 HOUR_MINUTE,即1小时5000分钟
解决办法:使用CAST进行转换,INTERVAL CAST(6/4 AS DECIMAL(3, 1)) HOUR_MINUTE
说明:
月份自动转换,即date_add("2017-04-29", INTERVAL 2 DAY),结果为"2017-05-01"
等价
等同于「time」+ INTERVAL expr unit
INTERVAL expr unit 可以和「time」互换位置,即:INTERVAL expr unit +「time」
unit取值和expr格式,对应关系
11. date_sub函数
参考date_add
等价
等同于「time」- INTERVAL expr unit
INTERVAL expr unit不能放在减号左侧,因为从时间区间减值,没有意义
10. unhex函数
格式:unhex(str)
功能:将十六进制字符串还原为原始数据
说明:对于字符串参数str,unhex(str)将参数中的每对字符当做两个十六进制数,并将其转换为由该数表示的字节。返回值是二进制字符串
返回值:成功返回二进制字符串;若参数中有非法字符,则返回NULL
示例:
9. hex函数
格式:hex(binary_data)
功能:使用十六进制字符串来表示二进制数据
说明:hex将binary_data中的每个字节,都转化成对应的两位十六进制值的字符串形式
参数:binary_data可为任意类型的数据,如字符串和数字
返回值:返回十六进制字符串
示例:
因为字符"a"对应的十六进制值为0x61,"b"=0x62,"c"=63,故字符串"abc"的十六进制字符串为"616263"
因为整数255的十六进制值为0xff,故整数255的十六进制字符串为"FF"
因为二进制数b'01101101'的十六进制值为0x6d,故二进制数b'01101101'的十六进制字符串为"6D"
因为十六进制数x'2bfe'的十六进制值为0x2BFE,故十六进制数x'2bfe'的十六进制字符串为"2BFE"
8. conv函数
格式:conv(N, from_base, to_base)
功能:数字的进制转换
参数:
N 原始数字,可为整数或内容为整数的字符串
from_base 原进制
to_base 目标进制
返回值:成功返回转化后结果的字符串表示,失败返回NULL
示例:
7. length函数
格式:length(arg)
功能:返回字符串占用的字节数
参数:参数可为字符串字面值,或字符串类型的字段名
6. char_length函数
格式:char_length(arg)
功能:返回字符串中的字符个数
参数:参数可为字符串字面值,或字符串类型的字段名
5. bit_length函数
格式:bit_length(arg)
功能:返回字符串占用的位数
参数:参数可为字符串字面值,或字符串类型的字段名
4. max函数
格式:max(FieldName)
功能:获取字段的最大值
示例:
3. min函数
格式:min(FieldName)
功能:获取字段的最小值
示例:
2. replace函数
格式:replace(str, from, to)
功能:将字符串str中的所有子串from替换为子串to
例如:
获取tb_user_device表中的guid, chns字段,同时将chns字段中的子串"nm":""删除
select guid, replace(chns, concat('"nm":""'), '') from tb_user_device;
1. concat函数
格式:concat(str1, str2...)
功能:返回由各参数首尾连接而成的字符串,参数可为字段名
例如:
查询chns字段包含「"nm":"xxx」的记录数,「xxx」为同一记录中guid的字段值
select count(*) from tb_user_device where chns like concat('%"nm":"', guid, '%');