【问题标题】:Querying with WHERE, AND & ILIKE使用 WHERE、AND 和 ILIKE 进行查询
【发布时间】:2018-01-04 02:27:26
【问题描述】:

我有这 3 列:

当我使用这个查询时:

SELECT "code", "desc", "lt_status_uuid" FROM "product_info" 
WHERE 
"lt_status_uuid" = '1f9d541b-5812-4d81-a997-6fb15ed397b1'
AND
"desc" ILIKE 
'%nk%' OR "code" ILIKE '%nk%';

即使 lt_status_uuid 1f9d541b-5812-4d81-a997-6fb15ed397b1 在我的表中不存在,我也会得到 1 条记录。我实际上期待没有返回记录。

如何根据lt_status_uuid查询,是否存在; ILIKE 会触发吗?

提前致谢。

【问题讨论】:

  • 这样查询怎么样? WHERE "lt_status_uuid" = '1f9d541b-5812-4d81-a997-6fb15ed397b1' AND ("desc" ILIKE '%nk%' OR "code" ILIKE '%nk%');

标签: sql database postgresql where


【解决方案1】:

由于ANDOR 的优先级,您需要括号。 AND 具有更高的优先级,并且首先被评估。因此,您的代码被解释为

SELECT "code", "desc", "lt_status_uuid" FROM "product_info" 
WHERE 
("lt_status_uuid" = '1f9d541b-5812-4d81-a997-6fb15ed397b1'
AND
"desc" ILIKE 
'%nk%') OR "code" ILIKE '%nk%';

添加括号可以阐明您的要求,以便评估顺序是您真正想要的:

SELECT "code", "desc", "lt_status_uuid" FROM "product_info" 
WHERE 
"lt_status_uuid" = '1f9d541b-5812-4d81-a997-6fb15ed397b1'
AND
("desc" ILIKE 
'%nk%' OR "code" ILIKE '%nk%');

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多