在我的桌子中,我有这种情况:
+-------+---------------+--------------+----------+
| ID | CODE | VALUE | Etc... |
+-------+---------------+--------------+----------+
| 1 | 10a10a | a1, b1, a2, | |
| | | c1, c5, e7 | |
+-------+---------------+--------------+----------+
| 2 | 15cef1 | b1, n6, p1, | |
| | | y3, e7, d9 | |
+-------+---------------+--------------+----------+
| |
| Etc.... |
当我运行以下查询时:
SELECT * FROM code WHERE value IN ('10a10a') AND facilities LIKE ('%b1%')
我定期从服务器获得响应。但是,使用facilities LIKE ('%b1%', '%c5%')
执行查询服务器没有返回结果。
在同一列中搜索多个值的正确方法是什么?
您可以使用单独的OR
子句查询。
SELECT * FROM code WHERE value IN ('10a10a') AND (facilities LIKE ('%b1%') OR facilities LIKE ('%c5%'))
请注意,由多余的支架包围的或语句的分组。
但是,如果您需要查询"值"列中的多个值,则可能意味着应将值列并将其移至其自己的单独表格,然后可以使用JOIN
语句查询,然后没有使用LIKE
操作员的通配符模式的开销。
您需要使用或查找2个值时:
WHERE facilities LIKE '1b1%' OR facilities LIKE '%c5%'