当前位置: 首页>>AGI专栏>>正文


MySQL常用字符串函数汇总

以下是 MySQL 常用字符串函数的分类汇总,包含语法示例及用途说明:

一、字符串连接与分割

  1. CONCAT(str1, str2, ...)
    • 用途:连接多个字符串。
    • 示例SELECT CONCAT('Hello', ' ', 'World'); → Hello World
    • 注意:若任一参数为 NULL,结果返回 NULL
  2. CONCAT_WS(separator, str1, str2, ...)
    • 用途:用指定分隔符连接字符串,自动忽略 NULL
    • 示例SELECT CONCAT_WS('-', '2023', '10', NULL, '05'); → 2023-10-05
  3. GROUP_CONCAT([DISTINCT] expr [ORDER BY ...] [SEPARATOR sep])
    • 用途:分组聚合时合并多行字符串。
    • 示例SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM users; → Alice, Bob, Charlie

二、字符串截取与长度

  1. SUBSTRING(str, start, length) 或 SUBSTR(str, start, length)
    • 用途:截取子字符串,start 从 1 开始。
    • 示例SELECT SUBSTRING('MySQL', 3, 2); → SQ
  2. LEFT(str, length) 和 RIGHT(str, length)
    • 用途:截取左/右侧指定长度的字符串。
    • 示例SELECT LEFT('Database', 4); → Data
  3. CHAR_LENGTH(str) 和 LENGTH(str)
    • 用途:字符数 vs 字节数(如 UTF-8 中汉字占 3 字节)。
    • 示例SELECT CHAR_LENGTH('中文'), LENGTH('中文'); → 2, 6

三、字符串转换与格式化

  1. UPPER(str) 和 LOWER(str)
    • 用途:转换为大写或小写。
    • 示例SELECT UPPER('Hello'); → HELLO
  2. REVERSE(str)
    • 用途:反转字符串。
    • 示例SELECT REVERSE('abc'); → cba
  3. FORMAT(number, decimal_places)
    • 用途:格式化数字为字符串(添加千位分隔符)。
    • 示例SELECT FORMAT(1234567.89, 2); → 1,234,567.89

四、字符串搜索与替换

  1. LOCATE(substr, str, [start]) 或 INSTR(str, substr)
    • 用途:返回子字符串首次出现的位置(从 1 开始),未找到返回 0。
    • 示例SELECT LOCATE('SQL', 'MySQL'); → 3
  2. REPLACE(str, from_str, to_str)
    • 用途:替换所有匹配的子字符串。
    • 示例SELECT REPLACE('Hello World', 'World', 'MySQL'); → Hello MySQL
  3. INSERT(str, start, length, new_str)
    • 用途:从 start 位置开始替换 length 长度的字符为 new_str
    • 示例SELECT INSERT('ABCDE', 2, 3, '123'); → A123E

五、字符串填充与修剪

  1. LPAD(str, length, pad_str) 和 RPAD(str, length, pad_str)
    • 用途:左/右填充字符串到指定长度。
    • 示例SELECT LPAD('7', 3, '0'); → 007
  2. TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
    • 用途:去除首尾空格或指定字符。
    • 示例SELECT TRIM(LEADING '#' FROM '##MySQL##'); → MySQL##

六、其他实用函数

  1. REPEAT(str, count)
    • 用途:重复字符串指定次数。
    • 示例SELECT REPEAT('Ha', 3); → HaHaHa
  2. SPACE(count)
    • 用途:生成指定数量的空格字符串。
    • 示例SELECT CONCAT('Hello', SPACE(3), 'World'); → Hello World
  3. STRCMP(str1, str2)
    • 用途:比较字符串(0=相等,-1=str1<str2,1=str1>str2)。
    • 示例SELECT STRCMP('apple', 'banana'); → -1

注意事项

  • NULL 处理:多数函数遇到 NULL 参数返回 NULL(如 CONCAT(NULL, 'a') → NULL)。
  • 索引起始:字符串位置参数通常从 1 开始(而非 0)。
  • 字符集影响:多字节字符集(如 UTF-8)会影响 LENGTH() 结果。

通过灵活组合这些函数,可高效完成复杂字符串处理任务。建议结合具体场景测试函数行为以确保符合预期。

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/4841.html,转载请注明来源链接。