我尝试在将数据库的所有列中的所有换行符导出到csv之前替换它们。
如果我指定列,我可以让它工作,但我有超过200
适用于1列的示例:
SELECT replace(
replace([Incident_Number],char(10),' '),char(13),' ') AS [Incident_Number]
FROM [itsmwh].[dbo].[HELP_DESK];
如何让我的表格中的所有列都能使用?
答案 0 :(得分:0)
在这种情况下,您可以编写脚本来为您生成脚本。
我会这样做......
DECLARE @Sql NVARCHAR(MAX);
SELECT @Sql = STUFF((SELECT ', replace(replace(' + QUOTENAME(C.name)
+ ',char(10),'' ''),char(13),'' '') AS '+QUOTENAME(C.name) +' '
FROM sys.columns c
inner join sys.tables t ON t.[object_id] = c.[object_id]
inner join sys.schemas s ON s.[schema_id] = t.[schema_id]
Where t.name = 'TableName' --<-- Table Name
and s.name = 'SchemaName' --<-- Schema Name
FOR XML PATH('') , TYPE).value('.','NVARCHAR(MAX)'),1,1,'')
SET @Sql = 'SELECT ' + @Sql + ' FROM [itsmwh].[dbo].[HELP_DESK]; '
Exec sp_executesql @Sql
答案 1 :(得分:0)
你也可以试试这个
DECLARE @tblName VARCHAR(20) = '[itsmwh].[dbo].[HELP_DESK]'
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX)
SELECT @columns = COALESCE(@columns, 'REPLACE(REPLACE(') + '[' + COLUMN_NAME + '], CHAR(10), '' ''), CHAR(13), '' ''), REPLACE(REPLACE('
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tblName
SET @sql = 'SELECT ' + LEFT(STUFF(@columns, LEN(@columns), 1, ''), LEN(STUFF(@columns, LEN(@columns), 1, '')) - LEN(', REPLACE(REPLACE')) + ' FROM ' + @tblName
EXEC(@sql)