为什么向 LIKE 添加第二个选项似乎会撤消我的 date = 函数?

Why does adding a 2nd option to LIKE seem to undo my date = function?

我正在尝试获得允许我对 LIKE 子句使用 2 个选项但也有特定日期的结果。此查询仅提供 dt 为 2021-06-04

的行
SELECT * FROM table.name
where
dt = date '2021-06-04'

但是,此查询满足 2 个 LIKE 选项,但似乎完全无视我的 dt = 条件。它给了我所有时间的结果,而不仅仅是 2021-06-04

SELECT * FROM table.name
where
dt = date '2021-06-04'
and
item_code like 'RNW%'
OR
item_code like 'XX%'

正如 Gordon 提到的,您必须在 sql 中了解更多关于操作优先级的信息,您可以使用括号

更改优先级
SELECT * FROM table.name
where
dt = date '2021-06-04'
and (item_code like 'RNW%' OR item_code like 'XX%')

您的条件正在从左到右处理,因此您所写的基本上将像这样工作:

SELECT * FROM table.name
where
(dt = date '2021-06-04' and item_code like 'RNW%')
OR
item_code like 'XX%'

要修复它,请添加括号以按照您想要的方式对条件进行分组:

SELECT * FROM table.name
where 
dt = date '2021-06-04'
and
( item_code like 'RNW%' OR item_code like 'XX%' )