【发布时间】:2017-09-21 22:28:35
【问题描述】:
如何转换值列表,例如 (value1, value2, value3, ...., value500) 到临时表或 cte?
一种方法是:
WITH huge_list_cte AS (
Select value1
UNION
Select value2 ...
)
有没有更好的办法?
【问题讨论】:
-
值列表从何而来?你能创建一系列
insert into #temp (field_name) values (value1)语句吗?将这些值保存在数据库中后,您想如何处理它们?您的回答将有助于形成响应(CTE 与临时表)。 -
您可以获得一个大字符串拆分函数(或在 SQL 2016 中使用
string_split),它接受一个字符串并根据分隔符值将其拆分为一个表。其中大多数允许将输出直接用作表格。 -
您可以避免键入 500 select/union/column 进行动态查询。而且我不是在谈论查询的动态执行,而只是为了打印查询
-
您可以手动创建一个临时表,并使用
INSERT INTO ... Values(..),(...),(...)...语句(注意:每个插入语句必须拆分为最多1000 行)。
标签: sql sql-server