如何在IF语句中检查Sql Server存储过程中的参数是空还是空?

Sna*_*yes 18 sql sql-server-2005

我读到这个:我如何检查Sql服务器字符串是否为空或空,但在这种情况下它没有帮助我.

我的存储过程中的代码片段:

IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)
        SELECT @sql = 'SELECT * FROM TEST1'
    ELSE
        SELECT @sql = 'SELECT * FROM TEST2'
 PRINT @sql;
Run Code Online (Sandbox Code Playgroud)

@item1NVARCHAR(1000)类型.

执行此存储过程时,我提供了值 item1

EXEC    [dbo].[my_proc]
        @item1 = N''
Run Code Online (Sandbox Code Playgroud)

表明

SELECT * FROM TEST1 //如果是正确的 @item1 = N'some'

代替

SELECT * FROM TEST2

它是sql中的一个函数来验证字符串是空还是空或者我在某处犯了错误?

就像在C#中 - > string.IsNullOrEmpty(myValue)

Mas*_*uso 32

这是正确的行为.

如果将@设置item1为值,则以下表达式将为true

IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)
Run Code Online (Sandbox Code Playgroud)

无论如何在SQL Server中没有这样的功能,但你可以创建自己的:

CREATE FUNCTION dbo.IsNullOrEmpty(@x varchar(max)) returns bit as
BEGIN
IF @SomeVarcharParm IS NOT NULL AND LEN(@SomeVarcharParm) > 0
    RETURN 0
ELSE
    RETURN 1
END
Run Code Online (Sandbox Code Playgroud)


Fáb*_*nto 10

要检查变量是null还是空,请使用以下命令:

IF LEN(ISNULL(@var, '')) = 0
    -- Is empty or NULL
ELSE
    -- Is not empty and is not NULL
Run Code Online (Sandbox Code Playgroud)