我有一个这样的数据库(Mysql 5.6):
id | value
--------------------------
1 | "value1;value2;value3"
2 | "value4;value5;value6"
我想提出如下请求:
SELECT id FROM table WHERE 'value5' IS IN value
return --> 2
SQLFiddle:http://sqlfiddle.com/#!9/b5c347
我无法更改数据库架构
最佳答案
使用LIKE语法,但使用方式如下:
SELECT id
FROM table
WHERE
value LIKE 'value5;%' OR
value LIKE '%;value5' OR
value LIKE '%;value5;%' OR
value LIKE 'value5';
这是一个肮脏的解决方案,不可能编制索引,但应该适合您的需要(在合理的时间内放在一个小表上)
另一种解决方案(如果确定值不包含逗号):
SELECT id
FROM table
WHERE
FIND_IN_SET('value5', REPLACE(value, ';', ',')