我需要一个查询,它返回连接的列的值以及字符串数据类型中的单引号,例如INSERT INTO STATEMENT,并考虑它们各自的数据类型。
例如,sql server中的表看起来像这样
String String Int
------------------------------------
000001 TUBO BUM 8 X 400 GRS 93,6
000002 TUBO BUM 2 X 50 GRS 10,6
000003 TUBO BUM 5 X 40 GRS 11,6
我需要的结果如下
'000001','TUBO BUM 8 X 400 GRS', 93.6
'000002','TUBO BUM 8 X 50 GRS', 10.6
'000003','TUBO BUM 8 X 40 GRS', 11.6
就像插入声明一样。
我需要为表格的所有列动态执行此操作。
我研究过,我看到需要咨询sys.columns吗?
谢谢!!!
答案 0 :(得分:1)
http://www.aha-soft.com/faq/q18.htm是一个github项目,用于自动生成表的insert语句的解决方案。
答案 1 :(得分:0)
使用以下脚本。它生成插入语句。
declare @sql varchar(max) = (select STUFF((SELECT ', ' + C.name
FROM sys.columns C
WHERE object_id = object_id('MyTable')
FOR XML PATH('')), 1, 2, ''))
declare @data varchar(max) = 'SELECT ''INSERT INTO MyTable (xx5xx) VALUES ('' + ''vx5xv'' + CAST(' + @sql + ' as varchar) + ''vx5xv'' + '')'' FROM MyTable'
set @data = replace(@data, ', ', ' as varchar) + ''vx5xv'' + '', '' + ''vx5xv'' + CAST(')
set @data = replace(replace(@data, 'xx5xx', @sql), 'vx5xv', '''''')
print @data
exec(@data)
答案 2 :(得分:0)
太简单了,
DECLARE @ISIN NVARCHAR(MAX) = ''
SELECT TOP 20 @ISIN += CONCAT(ISIN, ', ') FROM #WBO_TEMP_TBL_CLASS_DATA
SELECT @ISIN