現數據庫表中某個字段保存的值爲「01,07,08」,須要sql去查詢下表中到相應的名稱:
一、使用find_in_set()...
查詢字段中包含01,07,08的記錄:java
SELECT * FROM test WHERE find_in_set('01',itemname) OR find_in_set('07',itemname);
這SQL,腫麼給它拆分開呢,難道再循環一下....linux
二、正則表達式,完美解決:正則表達式
SELECT * FROM test WHERE itemname REGEXP '(01|07|08)';
SELECT * FROM test WHERE CONCAT(',',itemname,',') REGEXP '[^0-9]+(3|9)[^0-9]+';
這個查詢出來是多條數據的,而後再用到了group_concat()函數,OKsql
項目中就這麼寫的:數據庫
SELECT group_concat(itemname) FROM code_library WHERE codeno = 'Com_insurance' AND itemno REGEXP ( SELECT REPLACE (Species, ',', '|') FROM capital_info WHERE customerid = '2016011800000001' )
參考:api
MYSQL中利用select查詢某字段中包含以逗號分隔的字符串的記錄方法
http://my.oschina.net/wallenheng/blog/402246函數
MySql 查詢以逗號分隔的字符串的方法(正則)
ui
http://blog.csdn.net/hechurui/article/details/50550468
spa
MySQL模糊查詢:LIKE模式和REGEXP模式.net
http://www.linuxidc.com/Linux/2015-03/114580.htm