我很抱歉标题不完整——我也需要在这个标题上指出正确的方向。我正在尝试编写一个查询来搜索包含逗号分隔文本字段中的字符串的记录。我使用 MySql 和 php。
记录示例:
recordID | statuses[TEXT]
1010 | 102
1011 | 100,103
1012 | 100,106,201,300
我从另一个表status_dataset 中查询我想要搜索的雕像
statusName | statusCode | Yes/No
name1 | 100 |
name2 | 101 |
name3 | 102 | Yes
name3 | 103 |
name4 | 106 | Yes
现在我想查找包含雕像 102 或 106 的所有记录
我可以分两步解决这个问题,查询我想要的状态数据集,然后连接条件部分,所以我基本上得到下一个查询:
SELECT * FROM table AS t
WHERE t.statuses LIKE '%201%'
OR t.statuses LIKE '%206%'
或者这个
SELECT * FROM table AS t
WHERE FIND_IN_SET('201',t.statuses)
OR FIND_IN_SET('206',t.statuses)
我会得到我想要的结果:
recordID | statuses
1010 | 102
1012 | 100,106,201,300
现在我想知道是否有更好的方法来解决这个问题。最好在一个查询中。或者在两个查询中,我将创建一个我想要搜索的值列表。我查看了 FIND_IN_SET(str,strlist) 函数,但问题是我需要多个 str。有没有我可以使用的函数,所以我可以用我想要搜索的多个值填充它?我一直在谷歌搜索,但恐怕我不知道如何正确提问。