mysql - 如何使用 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 () 进行查询
解决方案
有两种方法可以做到这一点,它们都不涉及使用WHERE IN
方法,不可能使用IN
运算符对多个值使用通配符匹配。
使用
OR
声明SELECT * FROM yourtable WHERE CITY LIKE '%Miami%' OR CITY LIKE '%Vancouver%'
用于Mysql5.0
REGEXP
及以上SELECT * FROM yourtable WHERE CITY REGEXP 'Miami|Vancouver'
推荐阅读
- php - SQL:1292 截断不正确的 DOUBLE 值:'https://twitter.com/'
- windows-10 - 无法在 Windows 10 上启用 Hyper-V - 重新启动后更改恢复
- javascript - ES 6 Harmony 异步类方法链接
- python - IPython autoreload 不会在包中加载新功能或模块
- mysql - 添加外键时外键约束失败
- scala - 如何扩展 scalatest 断言宏
- python - Python:用熊猫读取CSV文件时替换值
- jquery - DOM 和 Window 之间的 DOM 关系是什么以及在哪里?
- javascript - TypeError:无法读取未定义的属性“toLowerCase”
- node.js - 如何为同一用户存储不同的注册令牌?