MySQL常用函数介绍

COALESCE 函数

在 SQL 中,COALESCE 函数用于返回参数列表中第一个非空表达式的值。如果所有参数都为 NULL,则 COALESCE 返回 NULL。这个函数在处理可能含有 NULL 值的情况下非常有用,可以确保在结果中始终有一个非空值。

COALESCE 函数的语法如下:


COALESCE(expression1, expression2, expression3, ...)

  • expression1, expression2, expression3, ...:要检查的表达式列表。

COALESCE 函数会逐个检查参数,返回第一个非 NULL 的参数值。如果所有参数都为 NULL,则返回 NULL。

示例

假设有一个表 students 包含学生的姓名和出生日期,但有些学生的出生日期字段可能为 NULL。我们可以使用 COALESCE 函数来选择非空的出生日期或提供一个默认值。


SELECT name, COALESCE(birthdate, 'Unknown') AS birthdate

FROM students;

在这个示例中,如果 birthdate 字段为 NULL,COALESCE 函数会返回 ‘Unknown’,否则会返回实际的出生日期值。

总之,COALESCE 函数是一个非常有用的函数,可以简化 SQL 查询中处理 NULL 值的逻辑,确保结果中不会出现 NULL 值,而是提供一个备用值。

TRIM函数

TRIM函数通常用于去除字符串的开头和结尾的空格或其他指定字符。在不同的数据库系统中,TRIM函数的语法可能略有不同,以下是一些常见数据库系统中TRIM函数的用法示例:

TRIM函数

在MySQL中,TRIM函数的语法如下:


TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM ] str)

  • BOTH: 去除开头和结尾的指定字符。

  • LEADING: 去除开头的指定字符。

  • TRAILING: 去除结尾的指定字符。

  • remstr: 要去除的字符,默认是空格。

  • str: 要处理的字符串。

示例:


SELECT TRIM('   Hello   '); -- 返回 'Hello'

SELECT TRIM(LEADING '0' FROM '000123'); -- 返回 '123'

SUBSTRING_INDEX函数

SUBSTRING_INDEX函数通常用于在指定分隔符的情况下从字符串中提取子字符串。这个函数在不同的数据库系统中可能有一些差异,以下是一些常见数据库系统中SUBSTRING_INDEX函数的用法示例:

在MySQL中,SUBSTRING_INDEX函数的语法如下:


SUBSTRING_INDEX(str, delim, count)

  • str: 要处理的字符串。

  • delim: 分隔符。

  • count: 指定提取的子字符串在分隔符出现的次数。正数表示从左往右数的次数,负数表示从右往左数的次数。

示例:


SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -- 返回 'www.mysql'

SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); -- 返回 'mysql.com'

FIND_IN_SET函数

FIND_IN_SET函数是MySQL中用于在逗号分隔的字符串列表中查找某个值的函数。该函数的语法如下:


FIND_IN_SET(search_str, str_list)

  • search_str: 要查找的字符串。

  • str_list: 逗号分隔的字符串列表。

FIND_IN_SET函数返回在逗号分隔的字符串列表中找到要查找的字符串的位置。如果找到,返回其位置(从1开始),如果未找到,则返回0。

示例:


SELECT FIND_IN_SET('apple', 'apple,banana,orange'); -- 返回 1

SELECT FIND_IN_SET('banana', 'apple,banana,orange'); -- 返回 2

SELECT FIND_IN_SET('grape', 'apple,banana,orange'); -- 返回 0

请注意,FIND_IN_SET函数在进行匹配时是区分大小写的,因此搜索的字符串应该与列表中的字符串大小写完全匹配。如果需要忽略大小写,可以在比较之前使用LOWERUPPER函数将字符串转换为统一的大小写。

NULLIF函数

NULLIF函数是用于比较两个表达式是否相等的函数。如果这两个表达式相等,则NULLIF函数返回NULL,否则返回第一个表达式的值。NULLIF函数的语法如下:


NULLIF(expr1, expr2)

  • expr1expr2是要比较的两个表达式。

如果expr1等于expr2,则返回NULL;否则返回expr1的值。

示例:


SELECT NULLIF(5, 5); -- 返回 NULL,因为5等于5

SELECT NULLIF(10, 5); -- 返回 10,因为10不等于5

SELECT NULLIF('apple', 'apple'); -- 返回 NULL,因为'apple'等于'apple'

SELECT NULLIF('apple', 'orange'); -- 返回 'apple',因为'apple'不等于'orange'

NULLIF函数通常用于在需要返回NULL值而不是特定值时使用,例如在处理特定条件下应返回NULL的情况。

FROM_UNIXTIME函数

FROM_UNIXTIME函数是MySQL中用于将 UNIX 时间戳转换为日期时间格式的函数。UNIX 时间戳是从 1970 年 1 月 1 日 00:00:00 UTC 到特定时间的秒数。

FROM_UNIXTIME函数的语法如下:


FROM_UNIXTIME(unix_timestamp, [format])

  • unix_timestamp 是一个整数,表示 UNIX 时间戳。

  • format 是可选参数,用于指定返回日期时间的格式。如果省略该参数,则返回默认格式。

示例:


SELECT FROM_UNIXTIME(1615827600); -- 返回 '2021-03-15 12:00:00'

SELECT FROM_UNIXTIME(1615827600, '%Y-%m-%d %H:%i:%s'); -- 返回 '2021-03-15 12:03:20'

在上面的示例中,第一个查询将 UNIX 时间戳 1615827600 转换为默认的日期时间格式,而第二个查询将其转换为指定格式的日期时间。

使用 FROM_UNIXTIME 函数可以方便地将 UNIX 时间戳转换为人类可读的日期时间格式,便于理解和处理时间数据。

STR_TO_DATE函数

STR_TO_DATE 函数是 MySQL 中用于将字符串转换为日期的函数。它的语法如下:


STR_TO_DATE(str, format)

  • str 是要转换为日期的字符串。

  • format 是日期格式,用于指定输入字符串的日期格式。

示例:


SELECT STR_TO_DATE('2024-03-15', '%Y-%m-%d'); -- 将字符串 '2024-03-15' 转换为日期格式

在上面的示例中,STR_TO_DATE 函数将字符串 '2024-03-15' 按照指定的格式 '%Y-%m-%d' 转换为日期格式。

使用 STR_TO_DATE 函数可以将符合特定格式的字符串转换为日期,这在处理需要将字符串日期转换为日期类型的情况下非常有用。确保在使用 STR_TO_DATE 函数时,提供正确的日期格式以确保准确的转换。

CAST函数

CAST 函数用于将一个数据类型转换为另一个数据类型。在 MySQL 中,CAST 函数的语法如下:


CAST(expression AS data_type)

  • expression 是要转换的表达式或值。

  • data_type 是要将表达式转换为的目标数据类型。

示例:


SELECT CAST('42' AS UNSIGNED); -- 将字符串 '42' 转换为无符号整数

在这个示例中,CAST 函数将字符串 '42' 转换为无符号整数类型。

CAST 函数在需要将一个数据类型转换为另一个数据类型时非常有用,可以在查询中使用它来确保数据类型的兼容性和准确性。

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的宝藏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值