MYSQL 字符串函数(三)
9、LCASE(s)/LOWER(s)
在 MySQL 中,LCASE() 和 LOWER() 函数是等价的,它们都用于将字符串转换为小写。
例如,如果你有一个名为 my_table 的表,其中有一个名为 my_column 的列,并且该列包含一些文本数据,你可以使用 LCASE() 或 LOWER() 函数来查询该列的小写版本。
使用 LCASE() 的示例:
SELECT LCASE(my_column) AS lower_case_column FROM my_table;
使用 LOWER() 的示例:
SELECT LOWER(my_column) AS lower_case_column FROM my_table;
在这两个示例中,AS lower_case_column 是一个别名,用于在结果集中命名转换后的列。
由于 LCASE() 和 LOWER() 在功能上完全相同,所以你可以根据偏好选择使用哪一个。在大多数情况下,开发者更倾向于使用 LOWER(),因为它在 SQL 标准中更为常见。
10、UCASE(s)/UPPER(s)
在 MySQL 中,UCASE() 和 UPPER() 函数也是等价的,它们都用于将字符串转换为大写。
与 LCASE() 和 LOWER() 类似,UCASE() 和 UPPER() 函数都接受一个字符串参数,并返回该字符串的大写版本。
例如,如果你有一个名为 my_table 的表,其中有一个名为 my_column 的列,并且该列包含一些文本数据,你可以使用 UCASE() 或 UPPER() 函数来查询该列的大写版本。
使用 UCASE() 的示例:
SELECT UCASE(my_column) AS upper_case_column FROM my_table;
使用 UPPER() 的示例:
SELECT UPPER(my_column) AS upper_case_column FROM my_table;
在这两个示例中,AS upper_case_column 是一个别名,用于在结果集中命名转换后的列。
同样地,由于 UCASE() 和 UPPER() 在功能上完全相同,所以你可以根据偏好选择使用哪一个。在 SQL 标准和许多数据库系统中,UPPER() 函数更为常见,因此许多开发者更倾向于使用它。
11、LEFT(s,n)
在 MySQL 中,LEFT() 函数用于从字符串的左侧开始提取指定数量的字符。LEFT(s,n) 会返回字符串 s 的最左边的 n 个字符。
这里,s 是你要提取字符的字符串,n 是你想要返回的字符数量。
例如,假设你有一个名为 users 的表,其中有一个名为 first_name 的列,你想获取每个用户名字的前三个字符。你可以使用 LEFT() 函数来实现这一点:
SELECT LEFT(first_name, 3) AS short_name FROM users;
在这个查询中,LEFT(first_name, 3) 会从 first_name 列的每个值中提取最左边的三个字符,并将结果作为 short_name 列返回。
如果 first_name 列中的某个值少于三个字符,LEFT() 函数将返回整个字符串。如果 n 的值为负数,或者 s 为 NULL,则 LEFT() 函数将返回 NULL。
LEFT() 函数在处理字符串和需要提取字符串的某一部分时非常有用,比如在生成缩写、截取文件名的一部分等场景中。
12、MID(s,n,len)
在 MySQL 中,MID() 函数用于从字符串中提取子字符串。MID(s,n,len) 会从字符串 s 的第 n 个位置开始提取长度为 len 的子字符串。
这里,s 是源字符串,n 是开始提取的位置(基于 1 的索引,即第一个字符的位置是 1),len 是要提取的子字符串的长度。如果省略 len 参数,则 MID() 会从位置 n 开始提取直到字符串的末尾。
例如,假设你有一个名为 products 的表,其中有一个名为 description 的列,你想从每个产品的描述中提取第 10 个字符开始的 5 个字符。你可以使用 MID() 函数来实现这一点:
SELECT MID(description, 10, 5) AS extracted_substring FROM products;
在这个查询中,MID(description, 10, 5) 会从 description 列的每个值的第 10 个字符开始提取 5 个字符,并将结果作为 extracted_substring 列返回。
如果 n 的值小于 1 或者大于字符串 s 的长度,MID() 函数将返回空字符串。如果 len 的值大于从位置 n 到字符串末尾的剩余字符数,MID() 函数将返回从位置 n 到字符串末尾的所有字符。如果 s 是 NULL,则 MID() 函数也将返回 NULL。
MID() 函数在处理字符串和需要提取字符串中特定部分的子字符串时非常有用。请注意,SUBSTRING() 函数在功能上与 MID() 相同,并且在许多数据库系统中更通用,因为它允许使用负索引来从字符串的末尾开始计数。在 MySQL 中,你可以根据偏好选择使用 MID() 或 SUBSTRING()。
13、SUBSTR(s, start, length)/SUBSTRING(s, start, length)
在 MySQL 中,SUBSTR() 和 SUBSTRING() 函数是等价的,它们都用于从字符串中提取子字符串。这两个函数接受三个参数:源字符串 s,开始位置 start,以及要提取的子字符串的长度 length。
函数的语法如下:
SUBSTR(s, start, length)
SUBSTRING(s, start, length)
s 是要从中提取子字符串的原始字符串。
start 是开始提取字符的位置(基于 1 的索引)。如果 start 是正数,则提取从该位置开始的子字符串;如果 start 是负数,则提取从字符串末尾开始计数的子字符串。
length 是可选参数,表示要提取的字符数。如果省略 length,或者其值为正数并且大于剩余字符串的长度,则函数将返回从 start 开始直到字符串末尾的所有字符。
这里有一些示例:
假设你有一个名为 messages 的表,其中有一个名为 content 的列,你想从每个消息的内容中提取特定的子字符串。
从第 5 个字符开始提取 10 个字符:
SELECT SUBSTR(content, 5, 10) AS extracted_substring FROM messages;
SELECT SUBSTRING(content, 5, 10) AS extracted_substring FROM messages;
从字符串末尾开始提取 5 个字符(使用负数索引):
SELECT SUBSTR(content, -5) AS last_five_chars FROM messages;
SELECT SUBSTRING(content, -5) AS last_five_chars FROM messages;
注意,当使用负数 start 值时,不需要 length 参数,因为函数会默认提取到字符串的末尾。
如果 start 的值小于 1 或者大于字符串 s 的长度(并且不是负数),SUBSTR() 和 SUBSTRING() 函数将返回空字符串。如果 s 是 NULL,则这两个函数也将返回 NULL。
由于 SUBSTR() 和 SUBSTRING() 在功能上完全相同,你可以根据偏好选择使用哪一个。在 SQL 标准和一些其他数据库中,SUBSTRING() 更为通用,因此在跨数据库编程时,使用 SUBSTRING() 可能更为可取。但在 MySQL 中,这两个函数可以互换使用。
14、SUBSTRING_INDEX(s, delimiter, number)
在 MySQL 中,SUBSTRING_INDEX() 函数用于根据指定的分隔符将字符串分割成多个子字符串,并返回其中的一部分。这个函数接受三个参数:源字符串 s,分隔符 delimiter,以及一个数字 number,用来指定返回哪个子字符串。
函数的语法如下:
sql复制代码SUBSTRING_INDEX(s, delimiter, number)
s 是源字符串。
delimiter 是用来分割字符串的分隔符。
number 是一个正整数或负整数,表示返回哪个子字符串。如果 number 是正数,函数返回从左边数起第 number 个分隔符之前的所有内容;如果 number 是负数,函数返回从右边数起第 abs(number) 个分隔符之后的所有内容。
这里有一些示例来说明如何使用 SUBSTRING_INDEX() 函数:
假设你有一个名为 users 的表,其中有一个名为 email 的列,你想提取用户名部分(即在 @ 符号之前的部分)。
SELECT SUBSTRING_INDEX(email, '@', 1) AS username FROM users;
在这个例子中,@ 是分隔符,1 表示我们想要第一个分隔符之前的所有内容,即用户名。
如果你想提取域名部分(即在 @ 符号之后的部分),你可以使用负数作为 number 参数:
SELECT SUBSTRING_INDEX(email, '@', -1) AS domain FROM users;
在这里,-1 表示我们想要最后一个分隔符之后的所有内容,即域名。
如果 delimiter 在字符串 s 中未出现,或者 number 的值超出了分隔符的实际数量,SUBSTRING_INDEX() 函数会返回整个字符串 s 或者根据 number 的正负返回从开始或结束到字符串末尾的部分。
SUBSTRING_INDEX() 函数在处理需要基于特定分隔符分割字符串并提取其中一部分的场景时非常有用,比如处理电子邮件地址、文件路径等。