我有一个表格,其中的数字值由逗号分隔,架构/字段如下所示
preferred_location - 0,161,186,263
preferred_location数据类型是长文本
我试图通过使用下面的查询获取具有preferred_location 161的行
select * from tablename where preferred_location in(161)
但没有得到任何结果
答案 0 :(得分:0)
尝试:
select * from tablename where find_in_set(preferred_location, '0,161,186,263') <> 0
答案 1 :(得分:0)
您需要使用find_in_set()
来查找集合中的值,如果您可以更改架构然后对其进行规范化,方法是使用另一个包含此表与preferred_location表关系的联结表
select * from
tablename
where
find_in_set('161',preferred_location ) > 0
根据评论进行修改
对于像find_in_set('161,168,234,678',preferred_location ) > 0
这样的多个值,不能这样做,你必须为每个位置ID执行
select * from
tablename
where
find_in_set('161',preferred_location ) > 0
and find_in_set('168',preferred_location ) > 0
and find_in_set('234',preferred_location ) > 0
and find_in_set('678',preferred_location ) > 0 ... for more
答案 2 :(得分:0)
这将用于在列中搜索逗号分隔值:
select * from tablename where preferred_location LIKE %161,% OR LIKE %,161,% OR LIKE %161,% OR LIKE %,161%