我在 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/