萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 字符串截取函數完全指南:LEFT、RIGHT、SUBSTRING、SUBSTRING_INDEX 實戰詳解

核心截取函數對比

函數語法說明
LEFTLEFT(str, len)最左 len 字符
RIGHTRIGHT(str, len)最右 len 字符
SUBSTRINGSUBSTRING(str, pos[, len])從 pos 開始(1 起),長度 len;pos 可負(倒數)
SUBSTRING_INDEXSUBSTRING_INDEX(str, delim, count)按分隔符 delim 第 count 次出現截取;count>0 取左,count<0 取右
MID / SUBSTRMID(str, pos, len)SUBSTRING 別名,ANSI SQL92 標準

實戰示例(以 '111cn.net' 為例)

LEFT / RIGHT

SELECT LEFT('111cn.net', 3);   -- '111'
SELECT RIGHT('111cn.net', 3);  -- 'net'

SUBSTRING 位置與長度

SELECT SUBSTRING('111cn.net', 4);       -- 'cn.net' (第4字符到末尾)
SELECT SUBSTRING('111cn.net', 4, 2);    -- 'cn'
SELECT SUBSTRING('111cn.net', -4);      -- '.net' (倒數4字符到末尾)
SELECT SUBSTRING('111cn.net', -4, 2);   -- '.n'   (倒數4字符起取2個)
-- 注意:len 不能為負

SUBSTRING_INDEX 分隔符截取

SELECT SUBSTRING_INDEX('www.111cn.net', '.', 2);   -- 'www.111cn' (第2個.之前)
SELECT SUBSTRING_INDEX('www.111cn.net', '.', -2);  -- '111cn.net' (倒數第2個.之後)
SELECT SUBSTRING_INDEX('www.111cn.net', '.coc', 1);-- 'www.111cn.net' (找不到分隔符返回原串)

去空格函數

LTRIM(str)   -- 去左空格
RTRIM(str)   -- 去右空格
TRIM([[BOTH|LEADING|TRAILING] [remstr] FROM] str)  -- 通用去除,默認去兩端空格

SELECT TRIM('  bar  ');               -- 'bar'
SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); -- 'barxxx'
SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');    -- 'bar'
SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');  -- 'barx'

性能與最佳實踐

  • 大量截取操作建議在應用層完成,減少數據庫 CPU 壓力。
  • SUBSTRING_INDEX 解析 URL、域名、路徑極其高效。
  • 避免在 WHERE 子句對大字段用函數(導致索引失效),改用 LIKE 'prefix%' 或全文索引。
copyright © 萬盛學電腦網 all rights reserved