1

我想从下表中搜索国家/地区:

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

我如何执行 sql 查询以获取包含 country = 'US' 以及其他逗号分隔国家的所有记录?
谢谢

4

6 回答 6

2

您可以使用 FIND_IN_SET 函数,例如 -

SELECT * FROM table
WHERE FIND_IN_SET('US', country) ;
于 2013-02-18T10:29:11.807 回答
2

您可以使用 FIND_IN_SET 函数,例如 -

 SELECT * FROM table WHERE FIND_IN_SET('US', country) ;
于 2013-03-01T09:41:47.043 回答
1
SELECT id, country
FROM yourtable
WHERE FIND_IN_SET('US', country)

或者

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

在此处查看小提琴。

于 2013-02-18T10:29:38.057 回答
1
SELECT  *
FROM    tableName
WHERE   FIND_IN_SET('US', country) > 0
于 2013-02-18T10:29:42.147 回答
1

您可以为此使用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(,.+)(,.+)*'

仅选择与 US 一起至少有另一个条目的那些。

于 2013-02-18T10:29:58.540 回答
1

试试下面的代码。

SELECT ID,COUNTRY FROM TABLE_NAME
WHERE COUNTRY LIKE '%US%;
于 2013-02-18T10:30:28.413 回答