gpt4 book ai didi

sql-server - SQL Server中如何检查表变量是否为空?

转载 作者:行者123 更新时间:2023-12-02 08:04:41 24 4
gpt4 key购买 nike

这是我的一个存储过程的一部分:

@dataInTable dbo.Table_Variable readonly,
....

AND (
( @dataInTable IS NULL )
OR
( item IN ( SELECT T FROM @dataInTable ) )
)

@dataInTable IS NULL 语法错误,错误为

Must declare the scalar variable "@dataInTable"

所以我将其更改为:

(SELECT T FROM @dataInTable) IS NULL

这有效,但如果 @dataInTable 有超过 1 个项目,我会收到错误:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

可以理解,所以我将其更改为:

(SELECT TOP(1) T FROM @ProgramRatings) IS NULL

工作完美,我所关心的是性能。

我想知道是否有更简单的方法来检查表变量是否为空,例如

AND (
( @dataInTable IS EMPTY )
OR
( item IN ( SELECT T FROM @dataInTable ) )
)

最佳答案

表变量与标量变量不同,因此正如您提到的那样,不允许使用 @dataInTable IS NULL 。我建议如下:

EXISTS (SELECT 1 FROM @dataInTable)

如果您确实想知道计数,以下内容也可能适合您的情况:

DECLARE @dataCount int = (SELECT COUNT(1) FROM @dataInTable)
IF @dataCount = 0 -- Empty

关于sql-server - SQL Server中如何检查表变量是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com