gpt4 book ai didi

sql - 为什么 WHERE 子句从结果中删除空值?

转载 作者:行者123 更新时间:2023-12-03 08:19:29 25 4
gpt4 key购买 nike

我有一个表,我想从中过滤数据。我尝试了以下查询

SELECT 
SIS, COUNT(*)
FROM DL_SQ_DEV_INT.SMRY_DAILY_TRAILER_REPORT
GROUP BY 1;

Result:
BL,17386
EQ,3242
FIFO,5747
GR,15655
HOLD,13035
LT BL,20566
LT GR,14615
LT OR,14190
LT PU,13877
LT YE,13683
null,223376
OR,15727
PI,3563
PU,16105
RW,200
TA,6
tbd,25302
WH,1945
YE,14510

现在,当我在其中添加 WHERE 子句时,它会过滤掉空值。查询是不等于 (<>)。如何避免这种情况并且结果中仍然存在空值?将 null 更改为空白或空格?

SELECT 
SIS, COUNT(*)
FROM DL_SQ_DEV_INT.SMRY_DAILY_TRAILER_REPORT
WHERE UPPER(TRIM(SIS)) <> 'EQ'
GROUP BY 1;

Result:
BL,17386
FIFO,5747
GR,15655
HOLD,13035
LT BL,20566
LT GR,14615
LT OR,14190
LT PU,13877
LT YE,13683
OR,15727
PI,3563
PU,16105
RW,200
TA,6
tbd,25302
WH,1945
YE,14510

最佳答案

“不等于”和“等于”都不会选择 NULL 值。

SQL 使用“三向逻辑”,其中表达式可以为未知。 NULL 是根本不存在任何值,因此它不能等于某个值,如果它不能等于比较值,那么它也不能“不等于”,而是未知。

要克服这个问题,您需要在 where 子句中显式处理 NULL,要包含 NULL,请使用 OR SIS IS NULL

SELECT 
SIS, COUNT(*)
FROM DL_SQ_DEV_INT.SMRY_DAILY_TRAILER_REPORT
WHERE UPPER(TRIM(SIS)) <> 'EQ' OR SIS IS NULL
GROUP BY 1;

关于sql - 为什么 WHERE 子句从结果中删除空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68310318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com