首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 逗號分隔字串取第一段值查詢技巧

     編輯:MySQL 資料庫相關知識

從逗號分隔欄位提取第一段值的 SQL 寫法

場景

欄位 ecnNO 存儲 'a1,b2,c3' 格式,需查詢第一段等於 'a1' 的記錄。

核心 SQL


SELECT COUNT(*) AS lot 
FROM OA_sample_check 
WHERE LEFT(ecnNO, LOCATE(',', ecnNO) - 1) = 'a1';

函數拆解

  • LOCATE(',', ecnNO):找到第一個逗號位置(從 1 起)
  • LEFT(str, len):取左側 len 字符
  • LOCATE - 1:排除逗號本身

邊界處理

  • 無逗號時 LOCATE 返回 0,LEFT(str, -1) 返回空串 → 不匹配 'a1'
  • 若需包含無逗號情況:WHERE LEFT(ecnNO, IF(LOCATE(',', ecnNO)>0, LOCATE(',', ecnNO)-1, LENGTH(ecnNO))) = 'a1'

擴展:取第 N 段

MySQL 8.0+ 可用 JSON_EXTRACT 或 SUBSTRING_INDEX:


-- 取第 2 段
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(ecnNO, ',', 2), ',', -1);

設計建議

避免在關係型資料庫存逗號分隔值,違反第一範式。應拆分為關聯表或用 JSON 型別(5.7+)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved