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

删除Microsoft SQL中所有列的换行符,sql,sql-server,sql-server-2008,tsql,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]; 我怎样才能使它对我的表中的所有列都起作用?在这种情况下,您可以编写一个脚本来为您生成一个脚本 我

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

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

适用于1列的示例:

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

我怎样才能使它对我的表中的所有列都起作用?

在这种情况下,您可以编写一个脚本来为您生成一个脚本

我会这样做

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

你也可以试试这个

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)