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

現數據庫表中某個字段保存的值爲「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

相關文章
相關標籤/搜索