MySQL 高级函数

1. MySQL 高级函数BIN(x)

MySQL高级函数BIN(x)用于将一个整数转换为二进制字符串。

语法:

sql 复制代码
BIN(x)

示例:

sql 复制代码
SELECT BIN(10);

这将返回'1010',表示整数10的二进制表示为1010。

2. MySQL 高级函数BINARY(s)

MySQL高级函数BINARY(s)用于将字符串转换为二进制数据。

语法:

sql 复制代码
BINARY(s)

参数说明:

  • s:要转换为二进制数据的字符串。

示例:

sql 复制代码
SELECT BINARY('Hello');

这将返回'Hello'的二进制表示形式,即'0100100001100101011011000110110001101111'。

3. MySQL 高级函数CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE result END

MySQL高级函数CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE result END用于根据条件返回不同的结果。当满足某个条件时,返回对应的结果;如果不满足任何条件,则返回ELSE后面的结果。

语法:

sql 复制代码
CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    WHEN conditionN THEN resultN
    ELSE result
END

示例:

sql 复制代码
SELECT name, age,
    CASE
        WHEN age < 18 THEN '未成年'
        WHEN age >= 18 AND age < 60 THEN '成年'
        ELSE '老年'
    END AS age_group
FROM users;

这个示例中,我们根据用户的年龄返回不同的年龄段。如果年龄小于18岁,返回'未成年';如果年龄在18到59岁之间,返回'成年';否则返回'老年'。

4. MySQL 高级函数CAST(x AS type)

MySQL高级函数CAST(x AS type)用于将一个值转换为指定的数据类型。

语法:

sql 复制代码
CAST(x AS type)

参数说明:

  • x:要转换的值。
  • type:目标数据类型,可以是以下之一:
    • TINYINT
    • SMALLINT
    • MEDIUMINT
    • INT
    • BIGINT
    • FLOAT
    • DOUBLE
    • DECIMAL
    • CHAR
    • VARCHAR
    • DATE
    • TIME
    • TIMESTAMP
    • BOOLEAN
    • ENUM('value1', 'value2', ...)

示例:

sql 复制代码
SELECT CAST('123' AS UNSIGNED);

这将返回123,因为字符串'123'被转换为无符号整数。

5. MySQL 高级函数COALESCE(expr1, expr2, ..., expr_n)

MySQL高级函数COALESCE(expr1, expr2, ..., expr_n)用于返回参数列表中第一个非NULL值。如果所有参数都是NULL,则返回NULL。

语法:

sql 复制代码
COALESCE(expr1, expr2, ..., expr_n)

示例:

sql 复制代码
SELECT COALESCE(NULL, 'Hello', 'World');

这个示例中,我们使用COALESCE函数来获取三个参数中的非NULL值。因为第一个参数是NULL,所以返回第二个参数'Hello'。

6. MySQL 高级函数CONNECTION_ID()

MySQL高级函数CONNECTION_ID()用于获取当前连接的ID。

语法:

sql 复制代码
CONNECTION_ID()

示例:

sql 复制代码
SELECT CONNECTION_ID();

这将返回当前连接的ID,如果当前没有连接,则返回NULL。

7. MySQL 高级函数CONV(x,f1,f2)

MySQL高级函数CONV(x,f1,f2)用于将一个字符串从一种字符集转换为另一种字符集。

语法:

sql 复制代码
CONV(x, f1, f2)

参数说明:

  • x:要转换的字符串
  • f1:原始字符集
  • f2:目标字符集

示例:

sql 复制代码
SELECT CONV('你好', 'GBK', 'UTF8');

这个示例中,我们将字符串'你好'从GBK字符集转换为UTF8字符集。

8. MySQL 高级函数CONVERT(s USING cs)

MySQL高级函数CONVERT(s USING cs)用于将一个字符串按照指定的字符集进行转换。

语法:

sql 复制代码
CONVERT(s USING cs)

参数说明:

  • s:要转换的字符串。
  • cs:目标字符集,例如'UTF8', 'GBK', 'ASCII'等。

示例:

sql 复制代码
SELECT CONVERT('你好' USING 'GBK');

这将返回'\xc4\xe3\xba\xc3',即'你好'在GBK字符集中的编码。

9. MySQL 高级函数CURRENT_USER()

MySQL高级函数CURRENT_USER()用于返回当前连接的用户名。

语法:

sql 复制代码
CURRENT_USER();

示例:

sql 复制代码
SELECT CURRENT_USER();

这个示例中,我们使用CURRENT_USER()函数来获取当前连接的用户名。

10. MySQL 高级函数DATABASE()

MySQL高级函数DATABASE()用于获取当前连接所在的数据库名称。

语法:

sql 复制代码
DATABASE()

示例:

sql 复制代码
SELECT DATABASE();

这将返回当前连接所在的数据库名称,例如'test_db'。

11. MySQL 高级函数IF(expr,v1,v2)

MySQL高级函数IF(expr,v1,v2)用于根据表达式的值返回不同的结果。

语法:

sql 复制代码
IF(expr, v1, v2)

参数说明:

  • expr:要判断的表达式,如果为真则返回v1,否则返回v2。
  • v1:当表达式为真时返回的结果。
  • v2:当表达式为假时返回的结果。

示例:

sql 复制代码
SELECT IF(1 > 0, 'True', 'False');

这个示例中,我们使用IF()函数来判断1是否大于0,如果为真则返回'True',否则返回'False'。

12. MySQL 高级函数IFNULL(v1,v2)

MySQL高级函数IFNULL(v1,v2)用于判断一个表达式的值是否为NULL,如果MySQL高级函数IFNULL(v1,v2)用于判断一个表达式的值是否为NULL,如果为NULL则返回另一个表达式的值,否则返回第一个表达式的值。

语法:

sql 复制代码
IFNULL(v1, v2)

参数说明:

  • v1:要检查的表达式。
  • v2:如果v1为NULL时返回的值。

示例:

sql 复制代码
SELECT IFNULL(NULL, '默认值');

这将返回'默认值',因为v1为NULL。

13. MySQL 高级函数ISNULL(expression)

MySQL高级函数ISNULL(expression)用于检查表达式是否为NULL。

语法:

sql 复制代码
ISNULL(expression)

参数说明:

  • expression:要检查的表达式。

示例:

sql 复制代码
SELECT ISNULL(NULL); -- 返回1,表示NULL
SELECT ISNULL(1); -- 返回0,表示非NULL

这个示例中,我们使用ISNULL()函数来检查两个值是否为NULL。如果值为NULL,则返回1;否则返回0。

14. MySQL 高级函数LAST_INSERT_ID()

MySQL高级函数LAST_INSERT_ID()用于获取最后一次插入操作生成的自增ID值。

语法:

sql 复制代码
LAST_INSERT_ID()

示例:

假设有一个名为"users"的表,其中包含一个自增ID列"id"和一个用户名列"username"。当向该表中插入一条新记录时,可以使用以下语句获取最后插入的ID值:

sql 复制代码
INSERT INTO users (username) VALUES ('John Doe');
SELECT LAST_INSERT_ID();

这将返回刚刚插入的新记录的ID值。

15. MySQL 高级函数NULLIF(expr1, expr2)

MySQL高级函数NULLIF(expr1, expr2)用于比较两个表达式的值,如果它们相等,则返回NULL;否则返回第一个表达式的值。

语法:

sql 复制代码
NULLIF(expr1, expr2)

参数说明:

  • expr1:第一个表达式。
  • expr2:第二个表达式。

示例:

sql 复制代码
SELECT NULLIF(1, 1); -- 返回NULL,因为两个值相等
SELECT NULLIF(1, 2); -- 返回1,因为两个值不相等

这个示例中,我们使用NULLIF()函数来比较两个值是否相等。如果相等,则返回NULL;否则返回第一个表达式的值。

16. MySQL 高级函数SESSION_USER()

MySQL高级函数SESSION_USER()用于获取当前会话的用户名。

语法:

sql 复制代码
SESSION_USER()

示例:

假设有一个名为"users"的表,其中包含一个用户名列"username"。当使用SESSION_USER()函数时,它将返回当前会话的用户名。

sql 复制代码
SELECT SESSION_USER();

这将返回当前会话的用户名。

17. MySQL 高级函数SYSTEM_USER()

MySQL高级函数SYSTEM_USER()用于返回当前连接的系统用户。

语法:

sql 复制代码
SYSTEM_USER()

示例:

sql 复制代码
SELECT SYSTEM_USER(); -- 返回当前连接的系统用户

这个示例中,我们使用SYSTEM_USER()函数来获取当前连接的系统用户。

18. MySQL 高级函数USER()

MySQL高级函数USER()用于获取当前连接的用户名。

语法:

sql 复制代码
USER()

示例:

假设有一个名为"users"的表,其中包含一个用户名列"username"。当使用USER()函数时,它将返回当前连接的用户名。

sql 复制代码
SELECT USER();

这将返回当前连接的用户名。

19. MySQL 高级函数VERSION()

MySQL高级函数VERSION()用于返回当前MySQL服务器的版本号。

语法:

sql 复制代码
VERSION()

示例:

sql 复制代码
SELECT VERSION(); -- 返回当前MySQL服务器的版本号

这个示例中,我们使用VERSION()函数来获取当前MySQL服务器的版本号。

20. MySQL 高级函数JSON_OBJECT()

MySQL高级函数JSON_OBJECT()用于创建一个JSON对象。

语法:

sql 复制代码
JSON_OBJECT(key1, value1, key2, value2, ...)

参数说明:

  • key1, key2, ...: 键名,可以是字符串或数字。
  • value1, value2, ...: 对应的值,可以是字符串、数字、布尔值、数组或JSON对象。

示例:

sql 复制代码
SELECT JSON_OBJECT('name', '张三', 'age', 30, 'isStudent', FALSE);

这将返回一个JSON对象:

json 复制代码
{
  "name": "张三",
  "age": 30,
  "isStudent": false
}

21. MySQL 高级函数JSON_ARRAY()

MySQL高级函数JSON_ARRAY()用于将多个值组合成一个JSON数组。

语法:

sql 复制代码
JSON_ARRAY(value1, value2, ...)

参数说明:

  • value1, value2, ...:要组合成JSON数组的值。

示例:

sql 复制代码
SELECT JSON_ARRAY('apple', 'banana', 'orange'); -- 返回一个包含三个元素的JSON数组

这个示例中,我们使用JSON_ARRAY()函数将三个字符串元素组合成一个JSON数组。

22. MySQL 高级函数JSON_EXTRACT()

MySQL高级函数JSON_EXTRACT()用于从JSON对象中提取指定路径的值。

语法:

sql 复制代码
JSON_EXTRACT(json_text, path)

参数说明:

  • json_text: 包含JSON数据的文本或列。
  • path: 要提取的JSON值的路径,可以是字符串或数字。

示例:

sql 复制代码
SELECT JSON_EXTRACT('{"name": "张三", "age": 30}', '$.name');

这将返回一个结果集,其中包含从JSON对象中提取的"name"值:"张三"。

23. MySQL 高级函数JSON_CONTAINS()

MySQL高级函数JSON_CONTAINS()用于检查一个JSON数组是否包含指定的值。

语法:

sql 复制代码
JSON_CONTAINS(json_array, value)

参数说明:

  • json_array:要检查的JSON数组。
  • value:要查找的值。

示例:

sql 复制代码
SELECT JSON_CONTAINS('["apple", "banana", "orange"]', 'banana'); -- 返回true,因为JSON数组包含'banana'

这个示例中,我们使用JSON_CONTAINS()函数检查一个包含三个元素的JSON数组是否包含字符串'banana'。

24. MySQL 高级函数ROW_NUMBER()

MySQL高级函数ROW_NUMBER()用于为结果集中的每一行分配一个唯一的数字。

语法:

sql 复制代码
ROW_NUMBER() OVER (ORDER BY column_name)

参数说明:

  • column_name: 用于排序的列名。

示例:

sql 复制代码
SELECT id, name, age, ROW_NUMBER() OVER (ORDER BY age) AS row_number
FROM employees;

这将返回一个结果集,其中包含每个员工的id、name和age,以及一个名为row_number的列,该列包含根据年龄排序后的唯一数字。

25. MySQL 高级函数RANK()

MySQL高级函数RANK()用于为结果集中的每一行分配一个排名。

语法:

sql 复制代码
RANK() OVER (ORDER BY column_name [ASC|DESC])

参数说明:

  • column_name:要排序的列名。
  • ASC|DESC:可选参数,指定排序顺序,默认为升序(ASC)。

示例:

sql 复制代码
SELECT name, score, RANK() OVER (ORDER BY score DESC) AS rank
FROM students;

这个示例中,我们使用RANK()函数为学生表中的每一行分配一个排名,按照分数降序排列。

相关推荐
于平安13 小时前
MySQL-触发器
数据库·mysql
白远山13 小时前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
其实防守也摸鱼13 小时前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
Omics Pro13 小时前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_9651481113 小时前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘
大猫和小黄13 小时前
MySQL锁与MVCC深度解析
mysql·mvcc·
lbb 小魔仙13 小时前
OpenClaw + cpolar 实战:远程 NAS、分享小游戏、RDP,再配置公网 AI 入口
数据库·人工智能·redis·oracle·prometheus
AFinalStone14 小时前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen14 小时前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone14 小时前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui