[英]Creating a usable comma-seperated INT list variable in SQL
尝试创建一个声明一个变量的查询,该变量存储一个用逗号分隔的int列表,然后稍后在WHERE语句中重新使用该列表。 参数将必须以IN(int,int,int)等格式传递,并且将始终根据@TG的值进行更改。 以下是我到目前为止的内容:
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数据库具有用于存储列表的良好数据结构。 它称为表 ,而不是字符串。
实质性地做您想要的一种方法是表变量:
DECLARE @TG int = 14168;
DECLARE @TG_ITEMS TABLE (item_key int);
INSERT INTO @TG_ITEMS(item_key)
SELECT DISTINCT i.item_key
FROM store__tracking_group sitg JOIN
store_tracking_group_detail sit
ON ??? JOIN
item i
ON ???
WHERE sitg.number = @TG;
SELECT ''
FROM ''
WHERE 'xx' IN (SELECT item_key FROM @TG_ITEMS);
这具有许多好处,例如可读性和性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.