如何检查是否参数是在IF语句SQL Server存储过程空或空?(How do check if a

2019-07-31 09:11发布

我这样说的: 我如何检查如果SQL服务器字符串为空或空的 ,但在这种情况下它不会帮助我。

从我的存储过程的代码:

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

@item1NVARCHAR(1000)输入。

当执行此存储过程,我所提供的价值item1

EXEC    [dbo].[my_proc]
        @item1 = N''

表明

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

代替

SELECT * FROM TEST2

它是介于SQL函数来验证一个字符串为null或空, 或者我做了什么地方错了吗?

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

Answer 1:

这是正确的行为。

如果你设置@ item1的值下面的表达式为真

IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)

反正在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


Answer 2:

要检查是否变量为空或空的使用:

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


Answer 3:

当然,这作品; 当@item1 = N''IS NOT NULL

您可以定义@item1NULL默认情况下,在您的存储过程的顶部,然后在参数无法通过。



文章来源: How do check if a parameter is empty or null in Sql Server stored procedure in IF statement?