我有這個 SQL 查詢:

但我收到一個錯誤:

如果我從變數中洗掉逗號分隔的值,它作業正常。以及如果我洗掉 NULL 檢查功能它作業正常。我能知道這個問題嗎
uj5u.com熱心網友回復:
這是因為 aCASE WHEN只能回傳 1 個值。
aSTRING_SPLIT回傳一個結果集。
我認為這樣的事情是你想要的。
SELECT *
FROM Facility f
WHERE (@Facility IS NULL OR f.facilityCode IN (SELECT value FROM string_split(@Facility,',')))
如果變數為空,這將獲取所有記錄。
uj5u.com熱心網友回復:
函式 dbo.split 會將字串拆分為多個值。這會混淆您的子查詢,并且會拋出您收到的錯誤。
如果您需要逗號之前的內容,請考慮使用:
select top 1 value
from dbo.split(@Facility, ','))
uj5u.com熱心網友回復:
您想說變數是否為 NULL,因此請忽略 WHERE 陳述句,如果是,您的查詢將是:
SELECT *
FROM Facility f
WHERE @Facility IN (select value from dbo.split(@Facility, ',')) OR @Facility IS NULL
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/422523.html
標籤:
下一篇:按生效日期拆分記錄
