我在 amazon redshift 中运行了以下三个查询:

select count(*)
from t1

计数为 1554。
select count(*)
from t1
where
    item_name ilike "blue"

计数是62。
select count(*)
from t1
where
    item_name not ilike "blue"

计数是85。

最后两个 (62 + 85) 应该等于 1554。我错过了什么?

最佳答案

双引号用于标识符:"myColumn"单引号用于值: 'value'
您的示例与 basic syntax rules 相矛盾。
此外,您没有考虑 NULL 值,它们都不符合:

item_name ilike 'blue'
也没有:
item_name not ilike 'blue'
你得到什么:
SELECT count(*)                             AS all_rows
     , count(item_name  ~~* 'blue' OR NULL) AS item_name_blue
     , count(item_name !~~* 'blue' OR NULL) AS item_name_not_blue
     , count(item_name)                     AS item_name_not_null
     , count(item_name IS NULL OR NULL)     AS item_name_null
FROM   t1;
~~* .. ILIKE 的内部 Postgres 运算符!~~* .. NOT ILIKE 的内部 Postgres 运算符
(小心:运算符优先级略有不同。)

关于sql - aws redshift 中的 ILIKE 和 NOT ILIKE 与总数不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17371926/

10-11 10:58