mysql - 为什么我的 OR 运算符在我的 WHERE 子句中不起作用?
问题描述
我需要编写一个 where 语句,它只返回以 A、B、C 或 E 开头的名称。我有一个 WHERE 子句,它的条件小于 D,这似乎工作正常。但我的 Equals E 条件似乎不起作用。
SELECT vendor_name,
CONCAT(vendor_contact_last_name, ', ', vendor_contact_first_name) AS full_name
FROM vendors
WHERE vendor_contact_last_name < 'D'
OR vendor_contact_last_name = 'E'
ORDER BY vendor_contact_last_name, vendor_contact_first_name;
它只返回以 A、B 和 C 开头的名称。
解决方案
您可以使用以下内容LEFT
:
SELECT vendor_name,
CONCAT(vendor_contact_last_name, ', ', vendor_contact_first_name) AS full_name
FROM vendors
WHERE LEFT(vendor_contact_last_name, 1) IN ('A', 'B', 'C', 'E')
ORDER BY vendor_contact_last_name, vendor_contact_first_name;
...或使用RLIKE
:
SELECT vendor_name,
CONCAT(vendor_contact_last_name, ', ', vendor_contact_first_name) AS full_name
FROM vendors
WHERE vendor_contact_last_name RLIKE '^[A-CE]'
ORDER BY vendor_contact_last_name, vendor_contact_first_name;
推荐阅读
- python - 如何使用返回列表作为另一个函数的输入的函数?
- javascript - 如何使用 i18nextBrowserLanguageDetector 的结果
- scala - Scala中的矩阵乘法
- jenkins - 自动部署 Jenkins,Payara
- javascript - 调用服务将未翻译的文本保存在 ngx-translate 库中时,但我错了
- android - 如何使用 bigquery 选择列拆分的最后一个索引
- html - 闪亮应用的导航栏干扰 rmarkdown 网页的导航栏
- c - 每个元素为 1 或 0 的行和列的总和。 C
- xcode - Xcode 10 构建阶段排序
- linq-to-sql - 过滤时 Include() 的顺序是否对性能有影响?