[英]Dynamic number of fields in table
我对TSQL有问题。 我有很多表,每个表包含不同数量的具有不同名称的fielsds。
我需要动态获取所有这些表,读取所有记录并将每条记录管理到字符串列表中,其中每个值用逗号分隔。 并做。 用这个字符串。
我认为我需要使用CURSORS,但是如果不知道具有名称和类型的具体数量的字段,我就无法进行FETCH。 也许我可以创建一个具有动态字段数的表变量?
非常感谢!
马卡罗夫·阿特姆(Makarov Artem)。
SELECT
ORDINAL_POSITION
,COLUMN_NAME
,DATA_TYPE
,CHARACTER_MAXIMUM_LENGTH
,IS_NULLABLE
,COLUMN_DEFAULT
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'MYTABLE'
ORDER BY
ORDINAL_POSITION ASC;
来自http://weblogs.sqlteam.com/joew/archive/2008/04/27/60574.aspx
我会重新调整用于生成INSERT语句的许多T-SQL脚本之一。 他们完全按照您的要求行事。 亦即
我找到的最完整的示例在这里
但只需通过简单的Google搜索“INSERT STATEMENT GENERATOR”即可获得几个可以重新调整以满足您需求的示例。
祝你好运!
也许您可以对此做些事情。
select T2.X.query('for $i in *
return concat(data($i), ",")'
).value('.', 'nvarchar(max)') as C
from (
select *
from YourTable
for xml path('Row'),elements xsinil, type
) as T1(X)
cross apply T1.X.nodes('/Row') T2(X)
它会为YourTable
中的每一行提供一行, YourTable
中的每个值YourTable
C
列中的逗号分隔。
这将为整个表构建一个XML,然后解析该XML。 如果你有很多行的表,可能会让你陷入困境。
顺便说一句:我从评论中看到,您可以“仅使用纯SQL”。 我真的认为这不符合“纯SQL”:)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.