如何在if语句中检查Sql Server存储过程中的参数是否为空或null?
我读到:但在这种情况下,这对我没有帮助 存储过程中的一段代码:如何在if语句中检查Sql Server存储过程中的参数是否为空或null?,sql,sql-server-2005,Sql,Sql Server 2005,我读到:但在这种情况下,这对我没有帮助 存储过程中的一段代码: IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0) SELECT @sql = 'SELECT * FROM TEST1' ELSE SELECT @sql = 'SELECT * FROM TEST2' PRINT @sql; @项目1为NVARCHAR1000类型 在执行此存储过程时,我为item1提供了值 它表明 从TEST1/中选择*如果
IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)
SELECT @sql = 'SELECT * FROM TEST1'
ELSE
SELECT @sql = 'SELECT * FROM TEST2'
PRINT @sql;
@项目1为NVARCHAR1000类型
在执行此存储过程时,我为item1提供了值
它表明
从TEST1/中选择*如果@item1=N'some'
而不是
从TEST2中选择*
它是sql中的某个函数,用于验证字符串是否为null或空,或者我是否在某个地方出错
就像在C->string.isNullOrEmptyValue中一样,这是正确的行为 如果将@item1设置为一个值,则下面的表达式将为true
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
这当然有效;当@item1=N时,它不为空
默认情况下,您可以在存储过程的顶部将@item1定义为NULL,然后不传入参数。要检查变量是NULL还是空,请使用以下命令:
IF LEN(ISNULL(@var, '')) = 0
-- Is empty or NULL
ELSE
-- Is not empty and is not NULL
解决了的。问题出在他身上。所以我改为和。是的,我的错误是在或代替了和。我喜欢这个想法,但很想用其他方法测试io性能。
IF LEN(ISNULL(@var, '')) = 0
-- Is empty or NULL
ELSE
-- Is not empty and is not NULL