SQL 中的 Return 行返回空值?显示它们不是空白值
Return row in SQL that returning null value? to show them not as blank value
select *
from dataentry with (nolock)
where clientnumber in (
'00602',
'00897',
'00940'
)
所以背景是clientnumber是客户发给我的值,将被插入到数据库中。但是上面的3个数字还没有被我插入数据库,所以当我在数据库中搜索它们时它会变成空白。 SQL 是否可以将这些数字显示为空值?
也许要做到这一点是对我已经插入的客户号码使用 not IN?但是假设我插入了 2000 个数字,那将是非常低效的。执行此操作的最佳方法是什么?
您可以左联接到包含“数字”的派生 table(好吧,实际上是具有可能的数字表示的字符串)。
SELECT d.clientnumber
FROM (VALUES ('00602'),
('00897'),
('00940')) AS n
(n)
LEFT JOIN dataentry AS de
ON de.clientnumber = n.n;
这将为您提供与 table 中不存在的列表中的“数字”以及 [=23= 中的任何“数字”一样多的 NULL
] 它在其中的次数。
或者,使用 NOT EXISTS
获取 table 中不存在的“数字”(尚未)。
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);
select *
from dataentry with (nolock)
where clientnumber in (
'00602',
'00897',
'00940'
)
所以背景是clientnumber是客户发给我的值,将被插入到数据库中。但是上面的3个数字还没有被我插入数据库,所以当我在数据库中搜索它们时它会变成空白。 SQL 是否可以将这些数字显示为空值?
也许要做到这一点是对我已经插入的客户号码使用 not IN?但是假设我插入了 2000 个数字,那将是非常低效的。执行此操作的最佳方法是什么?
您可以左联接到包含“数字”的派生 table(好吧,实际上是具有可能的数字表示的字符串)。
SELECT d.clientnumber
FROM (VALUES ('00602'),
('00897'),
('00940')) AS n
(n)
LEFT JOIN dataentry AS de
ON de.clientnumber = n.n;
这将为您提供与 table 中不存在的列表中的“数字”以及 [=23= 中的任何“数字”一样多的 NULL
] 它在其中的次数。
或者,使用 NOT EXISTS
获取 table 中不存在的“数字”(尚未)。
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);