Excel版本是2013,,SQL Server版本為2008 R2,應該和Excel和SQL Server版本沒啥關系!
把excel導入sql server(使用之前的文中寫的導入方法)后發現有不少空格難以消除,比如一個正常的8位號碼,用len(電話號碼)竟然是9,然后復制出來放到單引號中'12345678 ',最后一位是空格;然后使用replace(電話號碼,' ','')或者rtrim(電話號碼)都無法去除。
先說說這個rtrim(電話號碼)吧,ltrim和rtrim很熟(感覺),雖然不是經常用,但需要的時候總是順手拿來(必須的吧)!為毛rtrim(電話號碼)不管用,很郁悶。就搜啊(也只能搜了),我發現語法中,里面的數據類型需為varchar,可我的電話號碼的數據類型是nvarchar,應該沒問題啊,我想顯式轉換看看吧,一顯式轉換嚇了一跳,有的電話號碼前面和后面都是'?'。然后使用replace(電話號碼,'?','')替換掉就ok了。
關於rtrim的用法,參照:http://msdn.microsoft.com/zh-cn/library/ms178660.aspx
這里截個圖
仔細看語法還是有幫助滴,至少這個顯式轉換,不看我是不會想到的;當然平時正常使用不出意外的話,我都是按照習慣去寫sql,其實我都不知道character_expression需要是varchar類型,我只知道是字符串類型~~
這個解決了一部分“空格”的問題,下面就是另一部分“空格”了。
當然也搜了,各種各樣的,有點感觸的就是換行char(10),有可能是excel中當事人做的時候加了換行,抱着試試態度一試果然有效。
我還特定到excel里嚴重了那幾個號碼。
update table set 電話號碼=REPLACE(電話號碼,CHAR(10),'') where len(電話號碼)=9附上另兩個格式對應的balabala
制表符 CHAR(9)
回車 CHAR(13)
“空格”的問題,終於有了解決方法啦~~~