Mysql:在具有空格分隔值的字段中搜索

时间:2013-07-02 10:37:48

标签: mysql

我需要构建查询,它只显示不包含指定状态的行。

每一行都有一个名为“status”的列,其中包含空格分隔值。例如:“付款请求已发送” 我需要找到没有“已发送”状态的行。 如何在数据库中查找超过5 000 000行的最佳查询?

3 个答案:

答案 0 :(得分:1)

要查找所需的行,您可以执行以下操作:

SELECT * 
FROM table_name 
WHERE concat(' ',status,' ') not like '% sent %'

如果状态始终显示在字段的末尾,并且始终以空格为前缀

SELECT * 
FROM table_name 
WHERE status not like '% sent'

答案 1 :(得分:1)

试试这个......

SELECT * 
FROM from_table t
WHERE t.status not like '%sent'

答案 2 :(得分:1)

您可以在集合中使用find: -

SELECT *
FROM SomeTable
WHERE FIND_IN_SET('sent', REPLACE(status, ' ', ',')) > 0

但是长期更改数据库设计以将状态字段拆分到另一个表,每个状态一行。