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'
)


没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试