现数据库表中某个字段保存的值为“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