MySql 查詢以逗號分隔的字串的方法(正則)
阿新 • • 發佈:2019-01-03
現資料庫表中某個欄位儲存的值為“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' )