簡體   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