MySQL提供了一些操作字符串和日期等的内置函数,可以大大简化我们的开发,这里整理一下常用的函数。
字符串函数
BIN(number)
返回给定整数值对应的二进制字符串,输入null则返回null。
select BIN(10) ----> 1010
CAST(experssion as type)
将一种数据类型转为另一种数据类型的值。type可以是CHAR、DATE、DATETIME、TIME、BINARY等。
COALESCE(column[,…])
返回逗号分隔符列表中最左边的非null的字符串或列,如所有都为null则返回null。
//fristName有值,则返回firstName,都没有返回“noName”
select COALESCE(firstName,SecondName,“noName”)
CONCAT(string,…)
将字符串或列拼接起来,合并到一个字段中,如果有一个为null,则返回null。还可以将给定列的数值转为字符串。
select CONCAT(firstName,' ',secondName) as name form user
CONCAT_WS(separator,stirng,..)
用指定的分隔符连接列或字符串。
select CONCAT_WS('|','a','b','c') ---> a|b|c
FIND_IN_SET(string,string_list)
返回第一个参数在第二个参数的位置,第二个参数时由逗号隔开的单一字符串,没有则返回0,有一个为null,则返回null。
select FIND_IN_SET('b','a,b,c') ----> 2
INSERT(string,position,length,new_string)
将最后一个参数插入到第一个参数的指定位置,如果length大于0,会覆盖指定数目的字符,即替换,如果一个参数为null,则返回null。
SELECT INSERT('123456',2,0,'7') ----> 1723456
SELECT INSERT('123456',2,1,'7') ----->173456
SELECT INSERT('123456',2,2,'7') ----->17456
INSTR(string,substring)
返回子字符串在第一个参数首次出现的位置。没有返回0。
LOWER(string)
转换为小写字母。
LEFT(string,length)
返回左边的length长个字符。
select LEFT('123456',3) ----->123
LENGTH(stirng)
返回字符串的长度,假定一个字符为一个字节
LOAD_FILE(file)
读取文件内容,作为字符串返回。
SELECT LOAD_FILE('D:\1.txt')
LOCATE(substring,string,postion)
返回子字符串在string首次出现的位置,position收索的位置。
MID(string,position,length)
截取字符串。
REPLACE(string,old,new)
字符串替换。
REVERSE(string)
倒序。
日期和时间函数
ADDDATE(date,days)
ADDDATE(date,INTERVAL value type)
为指定日期加一个时间间隔。
select ADDDATE('2017-04-15',INTERVAL 1 MONTH) -----> 2017-05-15
CURDATE()
以yyyy-mm-dd返回当前时间。
CURTIME()
以hh:mm:ss返回当前时间
DATE(experssion)
返回yyyy-mm-dd部分。
DATE_FORMAT(date,”)
格式化日期。
DATEDIFF(date,date)
返回两个日期的差值(天数)。
SELECT DATEDIFF('2017-03-15','2017-04-15') ---> -31
DAY(date)
返回日期在某月的天数
LAST_DAY(date)
返回date月的最后一天的日期。
MONTH(date)
返回月份。
SECOND(date)
返回秒数
YERR(date)
返回年份
控制流程函数
CASE value WHEN value1 THEN result … ELSE END
CASE WHEN conditionTHEN result … ELSE END
IF(condition,result1,result2)
如果condition值为0或null,返回result2,否则返回result1
IFNULL(condition,result)
如果condition不为null,则返回condition的值,否则返回result
ISNULL(column)
如果为null返回1,不为null返回0
NULLIF(condition,condition2)
如果两个参数相等,返回null,否则返回第一个参数的结果