SQL函数用Null替换0

时间:2011-04-27 13:17:11

标签: sql sql-server sql-server-2005 user-defined-functions

嗨与我在互联网上发现的相反,我需要用null替换0,这样在表格中我将有一个null而不是0。

目前我做了以下事情:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION retunNull(@num nvarchar(255))
RETURNS nvarchar(255)
AS
BEGIN
    IF(@num IS '0')
        BEGIN
        @num = NULL
        END
        RETURN @num
END
GO

这给了我以下错误:

  

Msg 102,Level 15,State 1,Procedure retunNull,Line 6   '0'附近的语法不正确。   Msg 102,Level 15,State 1,Procedure retunNull,Line 11   'END'附近的语法不正确。

任何人都可以帮助我并引导我走向正确的方向吗? PS必须在函数中完成,因为它将被多次使用

2 个答案:

答案 0 :(得分:12)

您缺少SET声明。 SET @num = NULL,测试应为IF(@num = '0')

你不能只使用内置的NULLIF函数而不是创建标量UDF吗?

答案 1 :(得分:2)

SELECT NULLIF(MyColumn, 0)
FROM MyTable