繁体   English   中英

声明多值变量时如何使用“ *”接受所有可能的变量

[英]How to use “*” to accept all possible variables when declaring a multi-value variable

--NEW INFO--以下是我在想实现的目标,但返回语法错误。 任何想法如何解决语法错误?

 DECLARE @PersonID TABLE(val int) 
 INSERT INTO @PersonID 
 VALUES (*)

--ORIGINAL POST--我想声明一个SQL变量,该变量可以在查询中的许多地方引用。

以下是我的SQL声明变量:

DECLARE @PersonID TABLE(val int) 

INSERT INTO @PersonID 
VALUES (647), (167087)

但是有时我不想将查询结果集限制为与有限数量的变量选项相关的条目。
有没有一种方法可以在上面的SQL中使用"*"字符将变量打开为任意值?

如果是这样,请分享。
这将是注释掉我的声明语句以及整个查询中对变量的每个引用的绝佳选择。

SQL服务器

我想你想要这样的东西:

SELECT someColumn
FROM someTable
WHERE @Variable IS NULL OR SomeColumn = @Variable

如果您不向变量传递任何内容,则返回所有行。 如果确实将某些内容传递给变量,那么它将限制结果。

表变量的一种更冗长的方法是使用case语句或IF语句。

IF (SELECT COUNT(*) FROM @Variable) > 0
BEGIN
SELECT someColumns
FROM someTable
INNER JOIN @Variable ON
someColumn = val
END

ELSE
BEGIN
SELECT someColumns
FROM someTable
END

同样,对于此表变量,如果将其设置为NULL或不向其中插入任何行,则将为查询返回所有行。 如果变量中有值,则使用INNER JOIN。

原谅我的格式。 我在用手机。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM