我在我的表中有名为field的地方。存在空格分隔值(在一个字段中存储csv值存在问题)。现在我想解雇如下的查询。我怎么办?
select * from tablename where variablename in places
我确实尝试过这种方式,但它显示语法错误。
select * from tablename where variablename in replace(places,' ',',')
### places ###
bank finance point_of_interest establishment
答案 0 :(得分:1)
使用 FIND_IN_SET
以逗号分隔
SELECT *
FROM tablename
WHERE ( FIND_IN_SET( 'bank', variablename ) )
参考:SQL Fiddle
对于空格分隔
SELECT *
FROM tablename
WHERE ( FIND_IN_SET( 'bank', replace(variablename,' ',',') ) )
参考:SQL Fiddle
答案 1 :(得分:0)
您好我认为您的问题来自于IN的使用 IN for MySql就像这样使用
SELECT *
FROM table_name
WHERE column_name IN (bank,finance,point_of_interest, establishment);
如果您想要选择地点,则需要将每个地点指定为值
答案 2 :(得分:0)
最好的解决方案是规范化您的数据结构,并且没有一个字段存储多个值。
您可以在不进行规范化的情况下进行查询,但从性能的角度来看,任何解决方案都不是最优的。
使用与like
运算符匹配的模式:
... where fieldname like '% searched_value %'
使用replace()函数并将其与find_in_set()结合使用:
... where find_in_set('searched_value',replace(fieldname,' ',','))>0