一、問題描述:
數據庫中字段 nvarchar類型 存放數據如下:
'3.3×10'
原本以為右側是一個空格,但是rtrim方法無效,發現右側並不是空格,是一個特殊字符或特殊編碼 ,只是看起來像空格。
二、解決方案:
update WaterQuality set FecalColiform=replace(FecalColiform,'','') ; --- 1
update WaterQuality set FecalColiform=replace(FecalColiform,'','') ; --- 2
update WaterQuality set FecalColiform=replace(FecalColiform,'','') ; --- 3
update WaterQuality set FecalColiform=replace(FecalColiform,'','') ; --- 4
你可能有一個疑問 為什么重復執行相同的操作??
答:'' 這個東西看起來相同,實際又各不相同。
你需要完整的復制出該列,然后全部選中看他們的后面凹凸狀態 是否都為空了。
然后把那些沒修改成功的空格單獨復制出來再修改。
例如 復制出放入單引號中觀察 '2.0×10' ,然后復制出它的特有的‘’,然后在執行一次修改。
修改前:
修改后:
三、失敗經驗:
1.trim方法
select ltrim(' 3.3×10') --去除左邊的空格
select rtrim('3.3×10 ') --去除右邊的空格
select ltrim(rtrim(' 3.3×10 ')) --去除首尾空格
結果有效。
但是真實的數據是這樣的 '3.3×10'
select ltrim(rtrim('3.3×10')) --去除首尾空格
結果無效。
參考過的文章:
https://zhidao.baidu.com/question/183968041.html
https://www.cnblogs.com/TurboWay/p/5924445.html