SQL函数用Null替换0

Ian*_*ian 2 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
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

消息102,级别15,状态1,过程retunNull,行6'0'附近的语法不正确.消息102,级别15,状态1,过程retunNull,行11'END'附近的语法不正确.

谁能帮助我并引导我走向正确的方向?PS必须在函数中完成,因为它将被多次使用

Mar*_*ith 12

你错过了一个SET陈述.SET @num = NULL而测试应该是IF(@num = '0')

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


Sei*_*bar 5

SELECT NULLIF(MyColumn, 0)
FROM MyTable
Run Code Online (Sandbox Code Playgroud)