在所有列中删除Microsoft SQL中的换行符

时间:2015-03-30 21:54:04

标签: sql sql-server sql-server-2008 tsql

我尝试在将数据库的所有列中的所有换行符导出到csv之前替换它们。

如果我指定列,我可以让它工作,但我有超过200

适用于1列的示例:

SELECT replace(
          replace([Incident_Number],char(10),' '),char(13),' ') AS [Incident_Number]
FROM [itsmwh].[dbo].[HELP_DESK];

如何让我的表格中的所有列都能使用?

2 个答案:

答案 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)