首页 > 解决方案 > 如何使用 WHERE IN() 编写查询,其中字符串包含数组中的任何数据?

问题描述

如果我有这样的桌子

+------+---------------------------+
|  Id  |  City                     |
+------+---------------------------+
|   1  | Vancouver, Miami, New York| 
+------+---------------------------+
|   2  | Vancouver Miami           | 
+------+---------------------------+
|   3  | New York                  | 
+------+---------------------------+
|   4  | Miami                     | 
+------+---------------------------+
|   5  | Vancouver, New York       | 
+------+---------------------------+
|   6  | New York Miami            | 
+------+---------------------------+
|   7  | Vancouver                 | 
+------+---------------------------+

有些用户想从迈阿密或温哥华获取数据

如何编写查询以获取 id 为 1、2、4、5、6、7 的数据

id 为 3 的数据不应显示,因为该字符串中没有 Miami 或 Vancouver

编辑:因为我在数组列表中得到迈阿密和温哥华,所以我需要使用函数 WHERE IN () 进行查询

标签: mysqlsql

解决方案


有两种方法可以做到这一点,它们都不涉及使用WHERE IN方法,不可能使用IN运算符对多个值使用通配符匹配。

  1. 使用OR声明

    SELECT * FROM yourtable WHERE CITY LIKE '%Miami%' OR CITY LIKE '%Vancouver%'

  2. 用于Mysql5.0REGEXP及以上

    SELECT * FROM yourtable WHERE CITY REGEXP 'Miami|Vancouver'


推荐阅读