将存储过程结果从NULL转换为0

时间:2014-02-27 11:03:14

标签: sql sql-server

我有临时表接受执行存储过程的结果集。我无法改变存储过程。 sp在某些行中返回null列,但我想在将它们插入临时表时将NULL转换为0。如何轻松完成?

我的SQL就像:

Insert into #temp (co1, co2, co3)
exec sp_xxx
来自sp_xxx的<3> co3可能为NULL,但我想将其转换为0并存储在#temp.col3

4 个答案:

答案 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