参考文档

MySQL Functions:https://www.w3schools.com/sql/sql_ref_mysql.asp

查找相关

COALESCE函数

COALESCE()函数返回列表中的第一个非空值。

语法:COALESCE(val1val2....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(numberfrom_baseto_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(conditionvalue_if_truevalue_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(expressionalt_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(expr1expr2)

使用示例:

# 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();