如何在逗号分隔值表中搜索?

时间:2010-12-14 06:42:33

标签: mysql csv

我有一个MySQL表,其中包含逗号分隔值,如下所示:

first row=(3,56,78,12)  
second row=(6,44,2,3)  
third row=(67,4,2,7,1)  
fourth row=(88,55,22,33)  
fifth row=(88,55,3,1,5)

我想选择其集合中3的行。我怎么能这样做?

6 个答案:

答案 0 :(得分:23)

尝试:

SELECT * FROM TABLE_NAME WHERE FIND_IN_SET( 3, COLUMN_NAME ) 

答案 1 :(得分:13)

这样的东西
SELECT *
FROM Table
WHERE Field LIKE '3,%'
OR Field LIKE '%,3'
OR Field LIKE '%,3,%'
OR Field = '3'

答案 2 :(得分:3)

只使用Mysql函数FIND_IN_SET(str,strlist)

如果字符串str位于由N个子字符串组成的字符串列表strlist中,则返回1到N范围内的值。字符串列表是由用“,”字符分隔的子字符串组成的字符串。如果第一个参数是常量字符串而第二个参数是SET类型的列,则FIND_IN_SET()函数被优化为使用位算术。如果str不在strlist中,或者strlist是空字符串,则返回0。如果任一参数为NULL,则返回NULL。如果第一个参数包含逗号(“,”)字符,则此函数无法正常工作。

 SELECT * FROM table_name WHERE FIND_IN_SET('3', column_name);

答案 3 :(得分:1)

使用此条件

WHERE firstrow LIKE '3,%' 
    OR firstrow like '%,3'
    OR firstrow like '3'

答案 4 :(得分:1)

SELECT *
FROM Table
WHERE Field IN ($first_row)
OR Field IN ($second_row)
OR Field IN ($third_row)
OR Field IN ($fourth_row);

答案 5 :(得分:0)

您可以在查询中使用IN语句。请尝试此操作。

SELECT *
FROM Table
WHERE Field IN ($first_row)
OR Field IN ($second_row)
OR Field IN ($third_row)
OR Field IN ($fourth_row);