首页 > 解决方案 > SQL Server:如何替换文本字段中的换行符?

问题描述

我有以下 SQL

SELECT COLUMN_NAME
FROM Information_Schema.Columns
WHERE TABLE_NAME = 'TABLE'
  AND DATA_TYPE = 'varchar'
ORDER BY COLUMN_NAME

它返回:

    COLUMN_NAME
    -------------------
    CiudadConductor
    CiudadPropietario
    CodBaseLegal
    DireccConductor
    DireccPropietario
    PTActa
    PTClase
    PTCodCategoriaClase
    PTCodCIP
    PTCodiConductor 

使用此 SQL,我需要识别varchar存在的列,但我想做数据更新。

我知道这个 SQL 替换了,但是我如何让这两个 SQL 语句一起工作。

REPLACE(ColumnName, CHAR(13),'') 

varchar我想删除所有列中的换行符

标签: sqlsql-server

解决方案


这应该可以工作(未经测试),但是,PRINT如果它可能有点“关闭”,它将指导你:

DECLARE @SQL nvarchar(MAX),
        @Table sysname = N'T700InfracTrans';


SET @SQL = N'UPDATE ' + QUOTENAME(@Table) + NCHAR(13) + NCHAR(10) + 
           N'SET ' + STUFF((SELECT N',' + NCHAR(13) + NCHAR(10) + 
                                   N'    ' + QUOTENAME(COLUMN_NAME) + N' = REPLACE(REPLACE(' + QUOTENAME(COLUMN_NAME) + N',CHAR(13),''''),CHAR(10),'''')'


                            FROM INFORMATION_SCHEMA.COLUMNS
                            WHERE TABLE_NAME = @Table
                              AND DATA_TYPE = N'varchar'
                            ORDER BY COLUMN_NAME
                            FOR XML PATH(''),TYPE).value('.','nvarchar(MAX)'),1,7,N'') + N';';

PRINT @SQL; --Your debugging best friend.
--EXEC sp_executesql @SQL; --Uncomment to execute

推荐阅读