2013-02-18 179 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) ;