修剪SQL中的字段

时间:2013-10-03 13:40:26

标签: sql field whitespace trim removing-whitespace

我将Excel表中的数据导入到SQL中,很多字段的开头和结尾都有空格。

我试过

update Table_Names set Name_ID = replace(Name_ID, ' ', '')

update Table_Names set Name_ID = LTRIM(Name_ID)

Update TableName set Name_ID = LTRIM(RTRIM(Name_ID))

其中每一个都返回了受影响的行数。但是当我再次选择这些字段时,它们在开头和结尾仍然有空格。

知道为什么会这样,以及如何解决它?

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

可能存在制表符,但不会消除。试试这个:

update tablename set name_id = replace(name_id, char(9), '')

有时也会导入回车和换行。你可以使用char(10)和char(13)来遵循相同的模式来消除它们。

答案 1 :(得分:1)

一般来说,标签,换行符,回车是罪魁祸首,但如果遇到无法删除的空格字符,则可以创建如下函数:

CREATE FUNCTION [dbo].[fn_Trim] 
(
    @str as varchar(1000)
)
RETURNS varchar(1000)
AS
BEGIN   
    --Replace all whitespace characers with Characer 32 whitespace

    --NULL
    Set @str = Replace(@str,CHAR(0),CHAR(32));
    --Horizontal Tab
    Set @str = Replace(@str,CHAR(9),CHAR(32));
    --Line Feed
    Set @str = Replace(@str,CHAR(10),CHAR(32));
    --Vertical Tab
    Set @str = Replace(@str,CHAR(11),CHAR(32));
    --Form Feed
    Set @str = Replace(@str,CHAR(12),CHAR(32));
    --Carriage Return
    Set @str = Replace(@str,CHAR(13),CHAR(32));
    --Column Break
    Set @str = Replace(@str,CHAR(14),CHAR(32));
    --Non-breaking space
    Set @str = Replace(@str,CHAR(160),CHAR(32));


    Set @str = LTRIM(RTRIM(@str));
    Return @str
END
GO

然后使用它将列更新为:

Update Table_Names 
set Name_ID = dbo.fn_Trim(Name_ID)