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

相关推荐
骆晨学长6 分钟前
基于springboot的智慧社区微信小程序
java·数据库·spring boot·后端·微信小程序·小程序
@月落11 分钟前
alibaba获得店铺的所有商品 API接口
java·大数据·数据库·人工智能·学习
楠枬21 分钟前
MySQL数据的增删改查(一)
数据库·mysql
goTsHgo26 分钟前
从底层原理上解释 clickhouse 保证完全的幂等性
数据库·clickhouse
运维Z叔1 小时前
云安全 | AWS S3存储桶安全设计缺陷分析
android·网络·网络协议·tcp/ip·安全·云计算·aws
阿华的代码王国2 小时前
MySQL ------- 索引(B树B+树)
数据库·mysql
Hello.Reader2 小时前
StarRocks实时分析数据库的基础与应用
大数据·数据库
执键行天涯2 小时前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
liupenglove2 小时前
golang操作mysql利器-gorm
mysql·golang
yanglamei19623 小时前
基于GIKT深度知识追踪模型的习题推荐系统源代码+数据库+使用说明,后端采用flask,前端采用vue
前端·数据库·flask