我有临时表接受执行存储过程的结果集。我无法改变存储过程。 sp在某些行中返回null列,但我想在将它们插入临时表时将NULL转换为0。如何轻松完成?
我的SQL就像:
Insert into #temp (co1, co2, co3)
exec sp_xxx
来自sp_xxx的<3> co3可能为NULL,但我想将其转换为0并存储在#temp.col3 中
答案 0 :(得分:4)
试一试,
ISNULL(COLUMN_NAME, 0)
答案 1 :(得分:1)
Insert into #temp (co1, co2, co3);
exec sp_xxx;
- 更新列的值为空值:
update #temp set col1=isnull(col1,0), col2=isnull(col2,0), col3=isnull(col3,0)
where (col1 is null) or (col2 is null) or (col3 is null)
答案 2 :(得分:1)
您可以创建临时表,其中包含3个已更改的列,其值基于您当前的列..
以下示例..
CREATE TABLE #Products
(
ProductID int IDENTITY (1,1) NOT NULL
, QtyAvailable smallint
, UnitPrice money
, InventoryValue AS isnull(QtyAvailable,0)
)
insert into #Products(QtyAvailable,UnitPrice)
values (null,10),(20,10)
select * from #Products
在上面的示例中,InventoryValue是计算列,并且基于QtyAvailable值填充值。
希望它有所帮助!
答案 3 :(得分:0)
正如Vikram所说,在将数据检索到临时表后,您可以相应地更新值。如果它只是column3,那么可以为null
UPDATE #temp
SET col3 = 0
WHERE col3 IS NULL
会做得很好。
否则,当您从临时表中选择返回并稍后使用该信息时,您可以执行ISNULL检查
SELECT ISNULL(col3, 0)
FROM #temp