【发布时间】:2016-09-16 19:41:19
【问题描述】:
我有一个值列表,例如
1,2,3,4...
这将被传递到我的 SQL 查询中。
我需要将这些值存储在一个表变量中。所以基本上我需要这样的东西:
declare @t (num int)
insert into @t values (1),(2),(3),(4)...
是否可以在 SQL Server 中进行这种格式化? (把 1,2,3,4... 变成 (1),(2),(3),(4)...
注意:在这些值到达我的 SQL 脚本之前,我无法更改它们的外观;我被那个列表困住了。也可能并不总是 4 个值;它可以是 1 个或更多。
编辑以显示值的样子:在正常情况下,它是这样工作的:
select t.pk
from a_table t
where t.pk in (#place_holder#)
#placeholder# 只是一个文字占位符。当有人运行报告时,#placeholder# 将替换为该报告过滤器中的文字值:
select t.pk
from a_table t
where t.pk in (1,2,3,4) -- or whatever the user selects
t.pk 是int
注意:做
declare @t as table (
num int
)
insert into @t values (#Placeholder#)
不工作。
【问题讨论】:
-
以下答案显示了一种使用表值函数执行此操作的方法:stackoverflow.com/a/5401777/13087
-
这将向您展示如何使用表值参数stackoverflow.com/questions/30108973/…
-
传递给我的 sql 脚本的内容看起来像 1,2,3,4 。它不是字符串,如果我可以将其转换为字符串,那么是的,这些答案会起作用。
-
传递给脚本的“东西”是什么数据类型?换句话说,你如何在你的脚本中声明它?
-
在这个答案中,我添加了一些不错的tricks you can do with XML and string values。转到“动态输入”部分。希望这会有所帮助。
标签: sql sql-server xml