这让我很困惑。我有以下查询:
SELECT *
FROM table.contract
WHERE end_date IS NULL
AND LOWER(NAME) LIKE 'name'
OR LOWER(NAME) LIKE '%name1%'
OR LOWER(NAME) LIKE '%name2%'
因为它应该是,它应该只返回行,其中的END_DATE是NULL,但我得到的行有一个日期在他们。
数据类型是DATE,数据默认值是(null),所以我不知道为什么它也会返回一些带日期的行。我是不是脑子进水了?今天是星期五,所以如果我错过了一些简单的东西,我很抱歉。
任何帮助都将非常感激!
编辑:我真是个白痴。我忘了括号,代码应该如下所示:SELECT *
FROM table.contract
WHERE end_date IS NULL
AND (LOWER(NAME) LIKE 'name'
OR LOWER(NAME) LIKE '%name1%'
OR LOWER(NAME) LIKE '%name2%')
您似乎缺少一些()来确保您的"AND"one_answers"OR"之间的正确优先级。
如
SELECT *
FROM table.contract
WHERE end_date IS NULL
AND (LOWER(NAME) LIKE 'name'
OR LOWER(NAME) LIKE '%name1%'
OR LOWER(NAME) LIKE '%name2%')