Mysql 检索逗号分隔列表中存在值的行

Mysql 检索逗号分隔列表中存在值的行,mysql,Mysql,我想撤销这个查询: SELECT * FROM table WHERE status IN ( option,option1,option2 ); SELECT * FROM table WHERE FIND_IN_SET('option', TRIM(REPLACE(status,' ',''))) > 0; 在类似 SELECT * FROM table WHERE status contains ( 'option' ); SELECT * FROM table WH

我想撤销这个查询:

SELECT * FROM table WHERE status IN ( option,option1,option2 );
SELECT * FROM table 
    WHERE FIND_IN_SET('option', TRIM(REPLACE(status,' ',''))) > 0;
在类似

SELECT * FROM table WHERE status contains ( 'option' );
SELECT * FROM table WHERE status LIKE '%option%' );
其中字段“状态”列包含(通过示例):“选项,选项1”

当我使用时

SELECT * FROM table WHERE status contains ( 'option' );
SELECT * FROM table WHERE status LIKE '%option%' );
它还选择“status”列仅包含“option1”的行

这可能吗

示例数据:

id,name,status
1,'test1','option,option1'
2,'test2','option,option2'
3,'test3','option2'
4,'test4','option2,option3'
5,'test5','option'

SELECT * FROM table WHERE status contains ( 'option' );
此查询应选择记录1、2和5

“状态”字段类型为varchar

问题是状态字段包含几乎相同的数据,除了添加的数字到选项之外。当然,这是一个虚构的例子,但真实的东西有这种参数

更新: 在秋波的建议下终于找到了

我首先尝试了Gumbo的铅(添加了>0):

但它也不起作用

经过一番闲逛,我发现罪魁祸首是状态字段中选项之间的空格。这些记录是从另一个源导入的,逗号后带有空格:

“选项,选项1”而不是“选项,选项1”

所以我的结局是:

SELECT * FROM table WHERE status IN ( option,option1,option2 );
SELECT * FROM table 
    WHERE FIND_IN_SET('option', TRIM(REPLACE(status,' ',''))) > 0;

这对我很有用。

对于逗号分隔的值,您可以使用来搜索其中的值:

SELECT * FROM table WHERE FIND_IN_SET('option', status);
要对表达式求反,请使用:


对于逗号分隔的值,可以使用来搜索其中的值:

SELECT * FROM table WHERE FIND_IN_SET('option', status);
要对表达式求反,请使用:


不必在查询中运行额外的逻辑,如果可以,您可能只需要修复列数据:

UPDATE `table` SET `status` = REPLACE(`status`, ', ', ',');
然后你可以:

SELECT * FROM table WHERE FIND_IN_SET('option', status);

不必在查询中运行额外的逻辑,如果可以,您可能只需要修复列数据:

UPDATE `table` SET `status` = REPLACE(`status`, ', ', ',');
然后你可以:

SELECT * FROM table WHERE FIND_IN_SET('option', status);

您可以给出一些示例数据吗?您不应该像
option,option1
那样保存数据。您可以给出一些示例数据吗?您不应该像
option,option1
那样保存数据。这是一个很好的建议,但这要求状态字段是一个集合(或类似)类型,但它是一个字符串,并且字符串可能包含多个值(请参阅原始帖子中添加的文本)是的,我做了。但在我的情况下,再次出现了错误,我将在我的第一篇帖子中解释错误的原因。但现在,你的帖子对我来说至关重要,非常感谢!很好的建议,但这希望状态字段是一个集合(或类似)类型,但它是一个字符串,并且字符串可能包含多个值(见原始帖子中添加的文字)是的,我做了。但在我的情况下,再次出错,我将在我的第一篇帖子中解释出错的原因。但现在,你的帖子对我来说至关重要,所以谢谢!