1. 程式人生 > >MySql 查詢以逗號分隔的字串的方法(正則)

MySql 查詢以逗號分隔的字串的方法(正則)

現資料庫表中某個欄位儲存的值為“01,07,08”,需要sql去查詢下表中到相應的名稱:


NND,一點思路都木有,想了老久,突然想到了正則表示式....!啊哈哈哈.....

1、最開始想到的是find_in_set()...

查詢欄位中包含01,07,08的記錄:

SELECT * FROM test WHERE find_in_set('01',itemname) OR find_in_set('07',itemname);


想想,媽蛋,這存SQL,腫麼給它拆分開呢,難道再迴圈一下....

2、正則表示式,完美解決:

SELECT * FROM test WHERE itemname REGEXP '(01|07|08)';

SELECT * FROM test WHERE CONCAT(',',itemname,',') REGEXP '[^0-9]+[3|9][^0-9]+'; 

 

這個查詢出來是多條資料的,然後再用到了group_concat()函式,OK

專案中就這麼寫的:

SELECT
	group_concat(itemname)
FROM
	code_library
WHERE
	codeno = 'Com_insurance'
AND itemno REGEXP (
	SELECT
		REPLACE (Species, ',', '|')
	FROM
		capital_info
	WHERE
		customerid = '2016011800000001'
)