如何用SQL去除字段多余空格?解决SQL Server数据转Excel列拆分问题
解决SQL Server 2014字段多余空格导致Excel列拆分问题
你可以在现有处理换行的基础上,通过嵌套REPLACE结合LTRIM/RTRIM来清除首尾及中间的多余连续空格,具体SQL表达式如下:
LTRIM(RTRIM( REPLACE( REPLACE( REPLACE( REPLACE(你的字段名, CHAR(10), ' '), CHAR(13), ' ' ), ' ', ' ' ), ' ', ' ' ) ))
各部分作用说明:
REPLACE(你的字段名, CHAR(10), ' ')和REPLACE(..., CHAR(13), ' '):将字段中的换行、回车符替换为单个空格,避免数据拆分成多行- 两次嵌套
REPLACE(..., ' ', ' '):将连续的多个空格逐步替换为单个空格(第一次把双空格变单空格,第二次处理剩余的双空格,嵌套2-3次基本覆盖所有连续空格场景) LTRIM和RTRIM:清除字段首尾的空格
如果需要更彻底处理任意数量的连续空格,也可以创建自定义函数复用:
CREATE FUNCTION dbo.RemoveExtraSpaces(@InputString VARCHAR(MAX)) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @CleanString VARCHAR(MAX) -- 替换换行和回车为空格 SET @CleanString = REPLACE(REPLACE(@InputString, CHAR(10), ' '), CHAR(13), ' ') -- 循环替换所有连续空格为单个空格 WHILE CHARINDEX(' ', @CleanString) > 0 BEGIN SET @CleanString = REPLACE(@CleanString, ' ', ' ') END -- 去除首尾空格 SET @CleanString = LTRIM(RTRIM(@CleanString)) RETURN @CleanString END
使用时直接调用函数即可:
SELECT dbo.RemoveExtraSpaces(你的字段名) AS 清理后的字段 FROM 你的表名
这样处理后,字段中的所有多余空格(包括首尾、中间连续空格)都会被清除,复制到Excel时就不会出现数据拆分到多列的问题。
内容的提问来源于stack exchange,提问作者sophieoxfam
相关产品推荐
相关产品推荐

