首页 > 解决方案 > 为什么我的 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 开头的名称。

标签: mysql

解决方案


您可以使用以下内容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;

dbfiddle.uk 上的演示


推荐阅读