mysql常用函数
操作符优先级
下图展示了所有操作符的执行优先级,从高到低,同一行中的操作符优先级相同,相同优先级的情况下则从左到右执行,如果想改变优先级执行顺序,则可以使用括号
对比操作符
•对比操作符的执行结果为true,false,null三种
• Coalesce()代表返回第一个非Null的值
• Greatest()代表返回最大的值
• In()代表检查值是否在一系列的值之中
• Interval()代表返回比第一个参数小的参数的位置
• Isnull()代表检查参数是NULL
• Least()代表返回最小的参数
• Strcmp()对比两个字符串
逻辑操作符
• 逻辑操作符返回1 (TRUE), 0 (FALSE), 或者NULL
• Xor逻辑操作符
• mysql> SELECT 1 XOR 1;
• -> 0
• mysql> SELECT 1 XOR 0;
• -> 1
• mysql> SELECT 1 XOR NULL;
• -> NULL
• mysql> SELECT 1 XOR 1 XOR 1;
• -> 1
流程控制函数
• 流程控制函数包含以下四种函数
语法格式:
• CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END
注: 当value等于compare_value时,则返回result,否则返回else里的result,如果没有else子句则返回null
例:
mysql> SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;
mysql-> 'one'
• IF(expr1,expr2,expr3)
• 当expr1为1/true时,则返回expr2,否则返回expr3
• IFNULL(expr1,expr2)
• 当expr1为非null时,则返回expr1,否则返回exp2
• NULLIF(expr1,expr2)
• 当expr1等于expr2时,则返回null,否则返回exp1
字符串函数
• CHAR_LENGTH(str)
• 返回字符串的字符长度
• CONCAT(str1,str2,...)
• 返回括号里所有参数字符串连接在一起,当其中有参数为NULL时则返回NULL
• CONCAT_WS(separator,str1,str2,...)
• 返回以第一个参数为分隔符的连接后的一个字符串,当有参数为NULL时则null被忽略
• INSERT(str,pos,len,newstr)
• 将str中从pos位置开始后的len个字符替换成newstr字符串
例:
• mysql> SELECT INSERT('Quadratic', 3, 4, 'What');
• mysql-> 'QuWhattic
• INSTR(str,substr)
• 返回str字符串中第一个出现substr字符串的位置
例:
• mysql> SELECT INSTR('foobarbar', 'bar');
• mysql-> 4
• LEFT(str,len)
• 返回str字符串中从左边开始的len个长度的字符
例:
• mysql> SELECT LEFT('foobarbar', 5);
• mysql-> 'fooba'
• LENGTH(str)
• 返回str字符串的byte字节长度
• mysql> SELECT LENGTH('text');
• mysql-> 4
• LOWER(str)
• 返回将str字符串中所有字符变换成小写后的字符串,但对二进制文本无效
例:
• mysql> SELECT LOWER('QUADRATICALLY');
• mysql-> 'quadratically'
• UPPER(str)
• 返回将str字符串中所有字符转换成大写的字符串
例;
• mysql> SELECT UPPER('Hej');
• mysql-> 'HEJ'
• LTRIM(str) | RTRIM(str)
• 将str最左边|最右边的空格去掉并返回
例:
• mysql> SELECT LTRIM(' barbar');
• mysql-> 'barbar‘
• REPLACE(str,from_str,to_str)
• 将所有str字符串中匹配from_str子串的地方都替换成to_str子字符串
例:
• mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
• mysql-> 'WwWwWw.mysql.com'
日期和时间函数
• ADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days)
• 当expr为正数时则为增加时间,为负数时则为减少时间
• Unit参数可以是任意时间单位
例:
• mysql> SELECT ADDDATE('2018-01-02', INTERVAL 31 DAY);
• mysql-> '2018-02-02'
• DATE(expr)
• 获取expr中的日期
例:
• mysql> SELECT DATE('2018-12-31 01:02:03');
•mysql -> '2018-12-31'
• DATE_ADD(date,INTERVAL expr unit)
• 增加时间
例:
• mysql> SELECT DATE_ADD('2018-12-31 23:59:59' INTERVAL 1 SECOND);
•mysql-> '2019-01-01 00:00:00'
• mysql> SELECT DATE_ADD('2018-12-31 23:59:59' INTERVAL 1 DAY);
• mysql-> '2019-01-01 23:59:59'
• FROM_UNIXTIME(unix_timestamp)
• 根据给定的unixtime,返回yyyy-mm-dd hh:mi:ss
• UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
• 如果没有date参数,则返回当前时间到1970-01-01 00:00:00之间的秒数,如果有date参数,则表示date到1970-01-01 00:00:00之间的秒数
• mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19');
• mysql-> 1447431619
• DATE_FORMAT(date,format)
• 将date日期时间转换成format格式