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()函数为学生表中的每一行分配一个排名,按照分数降序排列。

相关推荐
沉到海底去吧Go5 分钟前
【图片自动识别改名】识别图片中的文字并批量改名的工具,根据文字对图片批量改名,基于QT和腾讯OCR识别的实现方案
数据库·qt·ocr·图片识别自动改名·图片区域识别改名·pdf识别改名
老纪的技术唠嗑局22 分钟前
重剑无锋,大巧不工 —— OceanBase 中的 Nest Loop Join 使用技巧分享
数据库·sql
雨白42 分钟前
发送自定义广播
android
未来之窗软件服务1 小时前
JAVASCRIPT 前端数据库-V6--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟·东方仙盟数据库
寒山李白1 小时前
MySQL复杂SQL(多表联查/子查询)详细讲解
sql·mysql·子查询·多表联查
冰橙子id1 小时前
centos7编译安装LNMP架构
mysql·nginx·架构·centos·php
玛奇玛丶1 小时前
面试官:千万级订单表新增字段怎么弄?
后端·mysql
雨白1 小时前
深入理解广播机制 (BroadcastReceiver)
android
一只爱撸猫的程序猿2 小时前
构建一个简单的智能文档问答系统实例
数据库·spring boot·aigc
nanzhuhe2 小时前
sql中group by使用场景
数据库·sql·数据挖掘