excel数据导入SQL Server中“空格”问题
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)
“空格”的问题,终于有了解决方法啦~~~