2013-02-18 180 views
1

我想要搜索一个表的国家,如下所示:逗号分隔字符串比较

+-----+-------------+ 
| id | country  
+-----+-------------+ 
| 1 | US   
+-----+-------------+ 
| 2 | US,IN,UK 
| 3 | US,NZ 
| 4 | AUS 

如何我执行SQL查询来获取包含一个国家的所有记录=“美国”额外的逗号分隔国家?
感谢

+0

请在提问之前请检查你的拼写。 – 2013-02-18 10:28:47

+0

@Martin Bean,非常感谢您的建议。无论我发布任何问题,我都会记住它 – Surinderpal 2013-02-18 11:36:48

+0

“country”列的类型是什么? – 2013-03-01 10:00:32

回答

1

可以使用FIND_IN_SET功能,例如 -

SELECT * FROM table 
WHERE FIND_IN_SET('US', country) ; 
1
SELECT id, country 
FROM yourtable 
WHERE FIND_IN_SET('US', country) 

SELECT id, country 
FROM yourtable 
WHERE CONCAT(',', country, ',') LIKE '%,US,%' 

请参阅小提琴here

+0

这也是正确的答案。比你这么多@fthiella – Surinderpal 2013-02-18 11:30:34

1
SELECT * 
FROM tableName 
WHERE FIND_IN_SET('US', country) > 0 
+0

这也是正确的答案。比你这么多@JW。 – Surinderpal 2013-02-18 11:31:45

1

您可以使用此LIKERLIKE

SELECT * FROM table_name WHERE country RLIKE '(.+?,)*?US(,.+?)*' 

SELECT * FROM table_name WHERE country LIKE '%US%' 

首先查询避免那些与国家有美国,成为子检索像RUS

SELECT * FROM table_name WHERE country RLIKE '(.+,)(.+,)*?US(,.+)*|(.+,)*?US(,.+)(,.+)*' 

只选择那些和我们一起至少另一个入口。

1

请尝试下面的代码。

SELECT ID,COUNTRY FROM TABLE_NAME 
WHERE COUNTRY LIKE '%US%; 
2

可以使用FIND_IN_SET功能,例如 -

SELECT * FROM table WHERE FIND_IN_SET('US', country) ;