試圖創建一個查詢來聲明存儲逗號分隔的int列表的變量,然後在之後的WHERE語句中重新使用該列表。參數必須以IN(int,int,int)等格式傳遞,並且將始終根據@TG的值進行更改。以下是我到目前爲止:在SQL中創建可用的逗號分隔的INT列表變量
DECLARE @TG int = 14168
DECLARE @TG_ITEMS varchar = (SELECT
STUFF((SELECT DISTINCT
',' + CONVERT(varchar(10), i.item_key, 120)
FROM store__tracking_group sitg
JOIN store_tracking_group_detail sit
JOIN item i
WHERE sitg.number IN (@TG)
FOR XML PATH ('')), 1, 1, ''))
--- MAIN QUERY HERE
SELECT ''
FROM ''
WHERE 'xx' IN (@TG_ITEMS)
假設SQL服務器,通過語法猜測 - 沒有動態SQL,或者以某種方式將該字符串拆分爲表的函數不起作用。爲什麼不能創建一個包含ID列表的臨時表/表變量,然後加入到其他查詢中?如果您使用的是2008+版本,則執行此操作的最佳方式是表格值參數。 – Bridge
只需用你想要的ID創建一個臨時表。然後加入桌子。無需轉換爲字符串。 – Carra
'IN'運算符期望以逗號分隔的值列表,而您試圖給它一個包含逗號分隔數據的值。這是'IN(1,2,3,4)'和'IN('1,2,3,4')'之間的區別 - 第一個將起作用。 –