我想要搜索一個表的國家,如下所示:逗號分隔字符串比較
+-----+-------------+
| id | country
+-----+-------------+
| 1 | US
+-----+-------------+
| 2 | US,IN,UK
| 3 | US,NZ
| 4 | AUS
如何我執行SQL查詢來獲取包含一個國家的所有記錄=「美國」額外的逗號分隔國家?
感謝
我想要搜索一個表的國家,如下所示:逗號分隔字符串比較
+-----+-------------+
| id | country
+-----+-------------+
| 1 | US
+-----+-------------+
| 2 | US,IN,UK
| 3 | US,NZ
| 4 | AUS
如何我執行SQL查詢來獲取包含一個國家的所有記錄=「美國」額外的逗號分隔國家?
感謝
可以使用FIND_IN_SET功能,例如 -
SELECT * FROM table
WHERE FIND_IN_SET('US', country) ;
SELECT id, country
FROM yourtable
WHERE FIND_IN_SET('US', country)
或
SELECT id, country
FROM yourtable
WHERE CONCAT(',', country, ',') LIKE '%,US,%'
請參閱小提琴here。
這也是正確的答案。比你這麼多@fthiella – Surinderpal 2013-02-18 11:30:34
SELECT *
FROM tableName
WHERE FIND_IN_SET('US', country) > 0
這也是正確的答案。比你這麼多@JW。 – Surinderpal 2013-02-18 11:31:45
您可以使用此LIKE
或RLIKE
。
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(,.+)(,.+)*'
只選擇那些和我們一起至少另一個入口。
請嘗試下面的代碼。
SELECT ID,COUNTRY FROM TABLE_NAME
WHERE COUNTRY LIKE '%US%;
可以使用FIND_IN_SET功能,例如 -
SELECT * FROM table WHERE FIND_IN_SET('US', country) ;
請在提問之前請檢查你的拼寫。 – 2013-02-18 10:28:47
@Martin Bean,非常感謝您的建議。無論我發佈任何問題,我都會記住它 – Surinderpal 2013-02-18 11:36:48
「country」列的類型是什麼? – 2013-03-01 10:00:32