2

我将 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))

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

知道为什么会发生这种情况以及如何解决吗?

任何帮助,将不胜感激

4

2 回答 2

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)
于 2013-10-03T13:58:26.797 回答
1

可能有制表符,修剪不会消除。尝试这个:

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

回车和换行有时也会被导入。您可以按照上述相同的模式使用 char(10) 和 char(13) 来消除这些。

于 2013-10-03T13:43:39.740 回答