繁体   English   中英

在SQL中创建可用的逗号分隔的INT列表变量

[英]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.

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