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, '%');  


posted on 2017-10-21 20:51  柴科夫斯不是基  阅读(298)  评论(0编辑  收藏  举报

导航