我想要搜索一个表的国家,如下所示:逗号分隔字符串比较
+-----+-------------+
| 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