返回 SQL 中返回空值的行?显示它们不是空白值

Posted

技术标签:

【中文标题】返回 SQL 中返回空值的行?显示它们不是空白值【英文标题】:Return row in SQL that returning null value? to show them not as blank value 【发布时间】:2021-07-08 23:57:27 【问题描述】:
select *
from dataentry with (nolock)
where clientnumber in (
'00602',
'00897',
'00940'
)

所以背景是客户端编号是客户端发送给我并将插入数据库的值。但是上面的3个数字还没有被我插入到数据库中,所以当我在数据库中搜索它们时它会变成空白。 SQL 有没有办法将这些数字显示为空值?

也许这样做是对我已经插入的客户号码使用 not IN?但是假设我插入了 2000 个数字,那将是非常低效的。最好的方法是什么?

【问题讨论】:

旁注:"Bad habits : Putting NOLOCK everywhere" 嘿,很抱歉再次打扰您,如果我不知道上面的 3 个值,有没有办法让它显示出来?假设给定一个列表,我想显示空列表。 如果该评论应该解决我的答案:如果你有一个列表,你知道他们。如果你不认识他们,你当然不能展示他们。恐怕我并没有真正明白你想说的话。 【参考方案1】:

您可以左连接到包含“数字”的派生表(实际上,字符串可能具有数字表示)。

SELECT d.clientnumber
       FROM (VALUES ('00602'),
                    ('00897'),
                    ('00940')) AS n
                                  (n)
            LEFT JOIN dataentry AS de
                      ON de.clientnumber = n.n;

这将为您提供与列表中未出现在表格中的“数字”一样多的NULLs,以及表格中的任何“数字”在其中出现的次数。

或者,更实际的用途,使用NOT EXISTS 来获取表中没有的“数字”(还)。

SELECT n.n AS clientnumber
       FROM (VALUES ('00602'),
                    ('00897'),
                    ('00940')) AS n
                                  (n)
       WHERE NOT EXISTS (SELECT *
                                FROM dataentry AS de
                                WHERE de.clientnumber = n.n);

甚至是它们是否存在的指示器。

SELECT n.n AS clientnumber,
       CASE
         WHEN EXISTS (SELECT *
                             FROM dataentry AS de
                             WHERE de.clientnumber = n.n) THEN
           'true'
         ELSE
           'false'
       END existence
       FROM (VALUES ('00602'),
                    ('00897'),
                    ('00940')) AS n
                                  (n);

【讨论】:

以上是关于返回 SQL 中返回空值的行?显示它们不是空白值的主要内容,如果未能解决你的问题,请参考以下文章

返回带有零而不是空值的 Access 记录集

sql语句返回类型为hashmap的时候空值的字段会显示吗

pandas 怎么处理表格中的空值

SQL从具有空值的行数据中选择MIN值

javascript判断变量是不是空值

如何在 s-s-rS 的任何列中过滤具有空值的行