2013-10-03 65 views
2

我從Excel表中導入數據到SQL中,並且很多字段在其開始和結尾都有空白。在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)) 

那些每一個返回受影響的行數。但是當我再次選擇這些字段時,它們在開始和結束時仍然有空白。

任何想法爲什麼會發生這種情況,以及如何解決它?

任何幫助,將不勝感激

回答

1

有製表符,是修剪不排除這是可能的。試試這個:

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

回車和換行有時也會導入。您可以使用char(10)和char(13)來遵循上面相同的模式來消除這些模式。

+0

好點。嘗試過的字符(9),字符(10)和字符(13),但同樣的結果不斷髮生..是否有另一種選擇? – HelpASisterOut

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)