MySQL Select:查找数组字段中是否存在单个值

时间:2014-10-16 05:55:12

标签: php mysql

我有一个字段“locations”,其中包含1,4,7,8等格式的值。

我想排除包含特定值的行。例如:$location = 4;

我试过了:SELECT * FROM users WHERE FIND_IN_SET($location, locations) = 0

还尝试了一些与IN ..!IN的组合但是再没有结果。有什么建议吗?

谢谢

2 个答案:

答案 0 :(得分:0)

SELECT * FROM users WHERE FIND_IN_SET($ location,locations)!= 0

答案 1 :(得分:0)

正如John Woo所指出的,您的查询必须有效。如果不是,则locations中的数据可能包含逗号前带空格的值,例如:1,4 ,7,8。在这种情况下FIND_IN_SET isn't working as expected。所以你可以尝试:

SELECT * FROM users WHERE NOT(locations REGEXP '[[:<:]]$location[[:>:]]')

[[:<:]], [[:>:]] stand for word boundaries,因此[[:<:]]4[[:>:]]将匹配列表中的4,但不会匹配14

测试并查看SQL Fiddle

上的差异