我读到这个:How do I check if a Sql server string is null or empty但在这种情况下它没有帮助我。
我的存储过程中的代码片段:
IF (@item1 IS NOT NULL) OR (LEN(@item1) > 0)
SELECT @sql = 'SELECT * FROM TEST1'
ELSE
SELECT @sql = 'SELECT * FROM TEST2'
PRINT @sql;
@item1
是NVARCHAR(1000)
类型。
执行此存储过程时,我提供了item1
EXEC [dbo].[my_proc]
@item1 = N''
显示
SELECT * FROM TEST1
// @item1 = N'some'
而不是
SELECT * FROM TEST2
这是sql中的一个函数来验证字符串是空还是空或我在某处犯了错误?
喜欢C# - > string.IsNullOrEmpty(myValue)
答案 0 :(得分:30)
这是正确的行为。
如果您将@ 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
答案 1 :(得分:8)
要检查变量是null还是空,请使用以下命令:
IF LEN(ISNULL(@var, '')) = 0
-- Is empty or NULL
ELSE
-- Is not empty and is not NULL
答案 2 :(得分:4)
当然有效;在@item1 = N''
时,IS NOT NULL
。
默认情况下,您可以在存储过程的顶部将@item1
定义为NULL
,然后不传入参数。