當前位置: 首頁>>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/zh-tw/article/4841.html,轉載請注明來源鏈接。