SQL插入选择和删除Null值

时间:2015-09-30 17:05:00

标签: sql tsql sql-insert insert-into

我必须使用不同的值填充一个表,所以我正在使用:

insert into A (pk1, pk2)
select pk1, pk2
from B

复杂的是,对于表B中的每个记录,其中一个值为Null,我想在表A中创建具有一些给定值的3个记录。由于列数是2,那么我将需要A x中的3 x 3 = 9条记录。

insert into A (pk1, pk2)
select isNull(pk1, 'value1' or 'value2' or 'value3'),
       isNull(pk2, 'value4' or 'value5' or 'value6')
from B

上面的语法显然不正确,但只是为了让您了解我正在尝试做什么。由于我不是专家,诱惑是使用过程编程语言来做,但我敢打赌,有一种方法可以在SQL中实现。我正在使用MS SQL Server,如果这有任何区别。

1 个答案:

答案 0 :(得分:1)

您可以创建一个表值函数,如果参数为null,则返回3行

bar

然后在您的select语句中使用6

create function dbo.ExpandIfNull (@value int)
returns table
as
return 
(
    select Value
    from (values (1),(2),(3)) as v(Value)
    where @value is null

    union all

    select @value
    where @value is not null
)