gpt4 book ai didi

Sql(Server) NULL 或空字符串仍在此处

转载 作者:行者123 更新时间:2023-12-04 19:27:45 27 4
gpt4 key购买 nike

我有这个问题

SELECT Ets_Se_Categorie AS Ets_Se_Categorie,COUNT(Ets_Se_Categorie) AS cpte
FROM TableV_MyTest
GROUP BY Ets_Se_Categorie

它给了我下表/结果

Ets_Se_Categorie                                            cpte
(Seems to be empty string) 5531
Old place 8
Secondary 1066
Principal 4713
Subsidiary 7985
First 9
headquarter 31610
Main Headquarter 1587

(似乎是空字符串)表示它是一个空字段

目标是拥有这个

Ets_Se_Categorie                                            cpte
Old place 8
Secondary 1066
Principal 4713
Subsidiary 7985
First 9
headquarter 31610
Main Headquarter 1587

我已经创建了这个查询

 SELECT *
FROM
(
SELECT Ets_Se_Categorie AS Ets_Se_Categorie,COUNT(Ets_Se_Categorie) AS cpte
FROM TableV_MyTest
GROUP BY Ets_Se_Categorie
) AS A
WHERE (A.Ets_Se_Categorie IS NOT NULL OR A.Ets_Se_Categorie != '')

问题是没有任何改变...

为什么我使用嵌套查询?

我先试试这个

 SELECT Ets_Se_Categorie,COUNT(Ets_Se_Categorie) AS cpte
FROM TableV_MyTest
WHERE (Ets_Se_Categorie IS NOT NULL OR Ets_Se_Categorie != '')
GROUP BY Ets_Se_Categorie

什么都没发生……

任何见解将不胜感激。可能很简单,但我对为什么有点困惑。

谢谢!

最佳答案

您使用了 OR 而不是 AND,这应该可以:

WHERE (A.Ets_Se_Categorie IS NOT NULL AND A.Ets_Se_Categorie != '')

由于对 OR 没有按预期工作的原因存在混淆:

两个条件都必须为 true 才能返回记录。所有记录都是 NOT NULL!= ''。考虑一个带有空字符串的记录,这个记录是NOT NULL,所以它被返回。

为什么您没有看到 NULL 记录:

NULL 不是有效值,表示 未定义。所以没有任何东西等于或不等于NULLNULL = NULLAnything != NULL 都不是 true。您必须使用 IS (NOT) NULL

在您的原始查询中,您已过滤掉 NULL 值:

 SELECT Ets_Se_Categorie,COUNT(Ets_Se_Categorie) AS cpte
FROM TableV_MyTest
WHERE (Ets_Se_Categorie IS NOT NULL OR Ets_Se_Categorie != '')
GROUP BY Ets_Se_Categorie

因为 NULL 既不是 NOT NULL 也不是 != ''(记住最后一节)。

结论:要么使用 IS NOT NULL AND != '' 要么 ISNULL(Column, '') != '' 要么 COALESCE(Column, ' ') != '' 这是 ANSI sql(适用于所有数据库)。

关于Sql(Server) NULL 或空字符串仍在此处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34902134/

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