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
函数在进行匹配时是区分大小写的,因此搜索的字符串应该与列表中的字符串大小写完全匹配。如果需要忽略大小写,可以在比较之前使用LOWER
或UPPER
函数将字符串转换为统一的大小写。
NULLIF函数
NULLIF
函数是用于比较两个表达式是否相等的函数。如果这两个表达式相等,则NULLIF
函数返回NULL
,否则返回第一个表达式的值。NULLIF
函数的语法如下:
NULLIF(expr1, expr2)
expr1
和expr2
是要比较的两个表达式。
如果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
函数在需要将一个数据类型转换为另一个数据类型时非常有用,可以在查询中使用它来确保数据类型的兼容性和准确性。