我需要生成低于指定格式的动态sql,其中我的表是一个参数,即列数不是静态的。
例如,下面可能是表模式
ID Name
1 asd
2 xyz我需要一个生成select语句的查询,如下所示
select 'ID :' + ID + ',Name :'+Name from table上面生成的sql输出将类似于ID : 1,Name:asd ID : 2,Name:xyz
如果表有更多的列,则需要更改的select语句会发生以下变化
select 'ID :' + ID + ',Name :'+Name + ',Col3 :' + Col3 ...from table有人能帮我解决这个问题吗
谢谢,Sree
发布于 2017-07-03 11:48:16
我可以使用下面的sql实现这一点。
DECLARE @TableName VARCHAR(MAX) = 'tableName'
DECLARE @SQL VARCHAR(MAX) = 'SELECT ''{''+'''
SELECT @SQL = @SQL + '
"'+COLUMN_NAME+'":"''' + '+coalesce(CAST('+COLUMN_NAME+' AS VARCHAR(MAX)),'''')+''",' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName
SET @SQL = LEFT(@SQL,LEN(@SQL)-1) + '
}'' FROM ' + @TableName
PRINT @SQL谢谢,Sree
发布于 2017-06-29 15:57:03
这里有一个选项,它使用一些XML和字符串操作。
我应该添加,空值将被排除。
示例
Declare @YourTable Table ([ID] varchar(50),[Name] varchar(50))
Insert Into @YourTable Values
(1,'asd')
,(2,'xyz')
Select stuff(
replace(
replace(
replace(
replace(
(Select * from @YourTable for XML RAW)
,'<row ',',')
,'="',':')
,'" ',',')
,'"/>','')
,1,1,'')返回
(No column name)
ID:1,Name:asd,ID:2,Name:xyz发布于 2017-06-29 15:46:30
使用信息架构视图。它们包含生成动态sql所需的所有信息。剩下的只是简单的SQL和耐心。
https://stackoverflow.com/questions/44829281
复制相似问题