当前位置: 首页 > 面试题库 >

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

华锦
2023-03-14
问题内容

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

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)


问题答案:

这是正确的行为。

如果将@设置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


 类似资料:
  • 当页面第一次加载时,我需要检查中是否有图像,并加载最后一个图像。 否则,我禁用预览按钮,提醒用户按下新图像按钮,并创建一个空数组来放置图像; 问题是中的

  • 大家好,我想检查一下,例如在Firebase中创建一个文档集合之前,如果object.name、object.title、object.velocity....只是一个空格("),或者它们在打字稿中为空(Ionic 4),但我认为还有另一种更快的方法,最好的建议是什么? 我所做的是,但我认为是这么长...: 非常感谢。

  • 为了建立一个注册系统,我建立了一个数据库,存储学生和教授的课程。但是,我试图创建一个存储过程,检查属性是否大于或等于'Sections'表中的属性。然而,我遇到了一个问题。PostgreSQL无法识别我的或语句。我该怎么解决这个问题? 我的错误: 这是我主要使用的观点: 这是我的数据库的快照: 有什么建议吗?

  • 我一直面临的问题是,一个页面中有25个div class=二级属性的元素,我正在尝试获取地址标签,但在这25个div元素中的一些元素中,地址标签可能根本不存在。 而跨度类 = 邻居将永远存在。如果有,我需要从地址中获取文本,否则我将从 span 类中获取文本 这是我在四处搜索后尝试过的代码,但它没有完成工作,因为它获得了整个站点的地址属性大小。 这些是我的原始代码。但是每当我遇到没有地址的div块

  • 那么如何在HQL中检查集合是否为空?简单的例子: 如果标题是一个变量,我可以 但是如果标题是一个列表/集合呢? 如果标题是列表,这将不起作用。经过激烈的搜索,我尝试了是空的、大小的和存在的函数,我还尝试了(: title)是空选项。 以上都不起作用。我知道有一种硬编码方式,根据标题列表的状态编写不同的查询,如果为空,则一个查询,如果为空,则另一个查询。但这将产生许多类似的HQL查询,只需稍作修改。

  • 我在验证函数中有两个字符串变量,它应该确保变量不会同时为null或空(不允许一个为null,另一个等于空)。 当前的IF语句非常复杂,因为我必须检查: 如果两者都为空 它是功能性的,但丑陋,不是“最佳实践”。如何简化?