如果我不知道值,是否显示一组行中的空值?
Show null values from a set of rows if I DON'T know the value?
所以背景是clientnumber是客户发给我的值,将被插入到数据库中。但是上面的3个数字还没有被我插入数据库,所以当我在数据库中搜索它们时它会变成空白。 SQL 是否可以将这些数字显示为空值?
如果我不知道以上 3 个值,我如何根据确实存在的值显示它们(因为它们在搜索时为空值)?
也许要做到这一点是对我已经插入的客户号码使用 not IN?但是假设我插入了 2000 个数字,那将是非常低效的。执行此操作的最佳方法是什么?
假设以下是我知道的值,但其中两个为空值,如何只显示空值?
select *
from dataentry with (nolock)
where clientnumber in (
'00602',
'00897',
'00940',
'22234',
'87669'
)
我想你可以使用 right join
--Let your table only contain these three number 00602,00897,00940
Create Table #temp
(
clientnumber varchar(10)
)
INSERT INTO #temp
values
('00602'),
('00897'),
('00940')
--Here is your values that you want to test
Declare @table table
(
clientnumber varchar(10)
)
INSERT INTO @table
values
('00602'),
('00897'),
('00940'),
('22234'),
('87669')
--the following shows the values that does not exists on your table
select ta.clientnumber
from #temp as tm
right join @table as ta
on tm.clientnumber =ta.clientnumber
where tm.clientnumber is null
--the following shows all values and there are two null values due to no any match on your table
select tm.clientnumber
from #temp as tm
right join @table as ta
on tm.clientnumber =ta.clientnumber
DROP TABLE #temp
所以背景是clientnumber是客户发给我的值,将被插入到数据库中。但是上面的3个数字还没有被我插入数据库,所以当我在数据库中搜索它们时它会变成空白。 SQL 是否可以将这些数字显示为空值?
如果我不知道以上 3 个值,我如何根据确实存在的值显示它们(因为它们在搜索时为空值)?
也许要做到这一点是对我已经插入的客户号码使用 not IN?但是假设我插入了 2000 个数字,那将是非常低效的。执行此操作的最佳方法是什么?
假设以下是我知道的值,但其中两个为空值,如何只显示空值?
select *
from dataentry with (nolock)
where clientnumber in (
'00602',
'00897',
'00940',
'22234',
'87669'
)
我想你可以使用 right join
--Let your table only contain these three number 00602,00897,00940
Create Table #temp
(
clientnumber varchar(10)
)
INSERT INTO #temp
values
('00602'),
('00897'),
('00940')
--Here is your values that you want to test
Declare @table table
(
clientnumber varchar(10)
)
INSERT INTO @table
values
('00602'),
('00897'),
('00940'),
('22234'),
('87669')
--the following shows the values that does not exists on your table
select ta.clientnumber
from #temp as tm
right join @table as ta
on tm.clientnumber =ta.clientnumber
where tm.clientnumber is null
--the following shows all values and there are two null values due to no any match on your table
select tm.clientnumber
from #temp as tm
right join @table as ta
on tm.clientnumber =ta.clientnumber
DROP TABLE #temp