选择数据mysql

时间:2016-06-20 08:41:38

标签: mysql sql

我在我的表中有名为field的地方。存在空格分隔值(在一个字段中存储csv值存在问题)。现在我想解雇如下的查询。我怎么办?

select * from tablename where variablename in places 

我确实尝试过这种方式,但它显示语法错误。

select * from tablename where variablename in replace(places,' ',',')



### places ###

bank finance point_of_interest establishment

3 个答案:

答案 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)

最好的解决方案是规范化您的数据结构,并且没有一个字段存储多个值。

您可以在不进行规范化的情况下进行查询,但从性能的角度来看,任何解决方案都不是最优的。

  1. 使用与like运算符匹配的模式:

    ... where fieldname like '% searched_value %'

  2. 使用replace()函数并将其与find_in_set()结合使用:

    ... where find_in_set('searched_value',replace(fieldname,' ',','))>0