参考文档
MySQL Functions:https://www.w3schools.com/sql/sql_ref_mysql.asp
查找相关
COALESCE函数
COALESCE()函数返回列表中的第一个非空值。
语法:COALESCE(val1, val2, ...., val_n)
查询示例
# W3Schools.com SELECT COALESCE(NULL, NULL, NULL, 'W3Schools.com', NULL, 'Example.com'); # 1 SELECT COALESCE(NULL, 1, 2, 'W3Schools.com');
进制相关
BIN函数
BIN()函数返回数字的二进制表示形式,作为字符串值。
语法:BIN(number)
查询示例:
SELECT BIN(8); SELECT BIN(15); SELECT BIN(111);
BINARY函数
BINARY函数将值转换为二进制字符串。
此功能相当于使用CAST(值AS BINARY)。
语法:
# 1 在这里,MySQL执行“HELLO”和“hello”的逐字符比较并返回1(因为在逐个字符的基础上,它们是等效的): SELECT "HELLO" = "hello"; # 0 这里MySQL执行“HELLO”和“hello”的逐字节比较并返回0(因为在逐个字节的基础上,它们不等效): SELECT BINARY "HELLO" = "hello";
CONV函数
CONV()函数将一个数字从一个数字基系统转换为另一个,并将结果作为字符串值返回。
注意:如果任何参数为NULL,则此函数返回NULL。
语法:CONV(number, from_base, to_base)
转换示例
# 从2进制转为10进制 SELECT CONV(1111, 2, 10); # 从10进制转为16进制 SELECT CONV(88, 10, 16);
转换相关
CAST函数
CAST()函数将(任何类型的)值转换为指定的数据类型。
语法:CAST(value AS datatype)
查询示例
# YYYY-MM-DD 日期 SELECT CAST("2017-08-29" AS DATE); # YYYY-MM-DD HH:MM:SS 日期时间型 SELECT CAST("2017-08-29 08:20:33" AS DATETIME); # HH:MM:SS 时间 SELECT CAST("08:20:33" AS TIME); # 字符型 SELECT CAST(150 AS CHAR); # 整数 SELECT CAST(5-10 AS SIGNED); # 无符号整数 SELECT CAST(12 AS UNSIGNED); # 浮点数 SELECT CAST(12.1 AS DECIMAL); # 二进制 SELECT CAST("12" AS BINARY);
CONVERT函数
CONVERT()函数将值转换为指定的数据类型或字符集。
语法:
CONVERT(value, type)
OR:
CONVERT(value USING charset)
转换类型示例
# YYYY-MM-DD 日期 SELECT CONVERT("2017-08-29" , DATE); # YYYY-MM-DD HH:MM:SS 日期时间型 SELECT CONVERT("2017-08-29 08:20:33" , DATETIME); # HH:MM:SS 时间 SELECT CONVERT("08:20:33" , TIME); # 字符型 SELECT CONVERT(150 , CHAR); # 整数 SELECT CONVERT(5-10 , SIGNED); # 无符号整数 SELECT CONVERT(12 , UNSIGNED); # 浮点数 SELECT CONVERT(12.1 , DECIMAL); # 二进制 SELECT CONVERT("12" , BINARY );
转换字符集示例
SELECT CONVERT("W3Schools.com" USING utf8); SELECT CONVERT("W3Schools.com" USING utf8mb4); SELECT CONVERT("W3Schools.com" USING latin1);
判断相关
CASE函数
语法:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
查询示例:
CASE语句通过条件并在满足第一个条件时返回一个值(如IF-THEN-ELSE语句)。 因此,一旦条件成立,它将停止读取并返回结果。
SELECT CASE WHEN 5 > 2 THEN "case 1" WHEN 2 = 5 THEN "case 2" ELSE "case else" END
如果条件不满足,则它将返回ELSE子句中的值。
SELECT CASE WHEN 2 = 5 THEN "case 2" ELSE "case else" END
如果没有ELSE部分且没有条件为真,则返回NULL。
SELECT CASE WHEN 2 = 5 THEN "case 2" END
在排序中使用
SELECT CustomerName, City, Country FROM Customers ORDER BY (CASE WHEN City IS NULL THEN Country ELSE City END);
IF函数
IF()函数在条件为TRUE时返回一个值,如果条件为FALSE则返回另一个值。
语法:IF(condition, value_if_true, value_if_false)
查询示例:
# YES SELECT IF(500<1000, "YES", "NO"); # NO SELECT IF(500>1000, "YES", "NO"); # NO 注:STRCMP(str1, str2)比较两个字符串,如果这两个字符串相等返回0 SELECT IF(STRCMP("hello","bye") = 0, "YES", "NO");
IFNULL函数
如果表达式为NULL,则IFNULL()函数返回指定的值。如果表达式为NOT NULL,则此函数返回表达式。
语法:IFNULL(expression, alt_value)
使用示例:
# W3Schools.com SELECT IFNULL(NULL, "W3Schools.com"); # Hello SELECT IFNULL("Hello", "W3Schools.com");
ISNULL函数
ISNULL()函数返回1或0,具体取决于表达式是否为NULL。如果expression为NULL,则此函数返回1.否则,返回0。
语法:ISNULL(expression)
使用示例:
# 1 SELECT ISNULL(NULL); # 0 SELECT ISNULL(""); # 0 SELECT ISNULL(350); # 0 SELECT ISNULL("Hello world!");
NULLIF函数
NULLIF()函数比较两个表达式,如果它们相等则返回NULL。 否则,返回第一个表达式。
语法:NULLIF(expr1, expr2)
使用示例:
# 25 SELECT NULLIF(25, "Hello"); # Hello SELECT NULLIF("Hello", "world"); # NULL SELECT NULLIF("2017-08-25", "2017-08-25");
服务器相关
CONNECTION_ID函数
CONNECTION_ID()函数返回当前连接的唯一连接ID。
语法:CONNECTION_ID()
SELECT CONNECTION_ID();
CURRENT_USER函数
CURRENT_USER()函数返回服务器用于验证当前客户端的MySQL帐户的用户名和主机名。
结果作为UTF8字符集中的字符串返回。
语法:CURRENT_USER()
SELECT CURRENT_USER();
DATABASE函数
DATABASE()函数返回当前数据库的名称。
如果没有当前数据库,则此函数返回NULL或“”。
语法:DATABASE()
SELECT DATABASE();
杂项
LAST_INSERT_ID函数
LAST_INSERT_ID()函数返回已在表中插入或更新的最后一行的AUTO_INCREMENT标识。
语法:LAST_INSERT_ID(expression)
SELECT LAST_INSERT_ID();