[SQL Server][T | sql移除全形空白
![[SQL Server][T](https://i.imgur.com/axBPWDg.jpg)
這週有個客戶的案子幾百隻程式上線,上線後的隔天早上,同事S回報了系統程式出現很基本的SQL語法錯誤,明明年輕的工程師都測試過,還是發生了。為了要掩蓋自己對這次問題原因的了解不足(是相容性層級嗎?),趕緊掛上電話花幾分鐘簡單的測試,試試改相容性層級然後回報同事S,最後發現問題在於不同SQL版本對全形空白的解析有差異,這次和相容性層級無關,晚上看F1賽車不練跑,快來筆記這個全形空白問題。好,我們來簡單測試作筆記。 使用中的版本測試先建立預存程序usp_testfullwidthspace CREATEprocusp_testfullwidthspace as...
![[SQL Server][T](http://pix1.agoda.net/hotelimages/300/3008492/3008492_17121510550060424840.jpg?s=800x)
這週有個客戶的案子幾百隻程式上線,上線後的隔天早上,同事S回報了系統程式出現很基本的SQL語法錯誤,明明年輕的工程師都測試過,還是發生了。
為了要掩蓋自己對這次問題原因的了解不足(是相容性層級嗎?),趕緊掛上電話花幾分鐘簡單的測試,試試改相容性層級然後回報同事S,最後發現問題在於不同SQL版本對全形空白的解析有差異,這次和相容性層級無關,晚上看F1賽車不練跑,快來筆記這個全形空白問題。
好,我們來簡單測試作筆記。
使用中的版本測試
先建立預存程序usp_testfullwidthspace
CREATE proc usp_testfullwidthspace as SELECT @@version SELECT * FROM sys.assemblies WHERE name LIKE %sql%
執行測試
exec usp_testwidespaceSQL Server 2012 : 正常! SQL Server 2014: 正常! SQL Server 2016: 正常! SQL Server 2008 執行: 建立預存程序時就會出現語法不正確!
原來中間多了一個全形空白(Unicode編碼是U+3000)
問題原因
好,結果就是T-SQL程式中夾帶了全型空白(Unicode編碼3000)在SQL Server 2012之後都視為正常了,2008R2不行。
至於為何這樣?從微軟connect找到一篇日本網友Nagino的提問,最後問題有收到SQL Server PM的回覆,原來SQL Server 在2012之後將U+3000視為fullwidth (全形空白),但在SQL 2008R2還沒開始防範。
...
取得本站獨家住宿推薦 15%OFF 訂房優惠
本站住宿推薦 20%OFF 訂房優惠,親子優惠,住宿折扣,限時回饋,平日促銷
刪除String trim()方法去不掉的空格(中文(全形)空格) | sql移除全形空白
資料庫使用技巧――SQL 全形與半形切換 | sql移除全形空白
如何去除資料中間的空白 | sql移除全形空白
sql空白字元,大家都在找解答 訂房優惠報報 | sql移除全形空白
欄位資料內空白如何移除 | sql移除全形空白
SQL Replace 後,怎麼會留空白呢? | 亂馬客 | sql移除全形空白
[SQL Server][T | sql移除全形空白
SQL TRIM() 移除前後空白字元 | sql移除全形空白
欄位資料內空白如何移除 | sql移除全形空白
SQL:SELECT英數字不分大小寫、不分全半形、忽略空白 | sql移除全形空白
SQL TRIM() 移除前後空白字元 | sql移除全形空白
[SQL Server][T | sql移除全形空白
SQL TRIM 函數 | sql移除全形空白
SQL Replace 後,怎麼會留空白呢? | sql移除全形空白
SQL 去除空白空白字元轉為NULL | sql移除全形空白
sql trim全形空白,大家都在找解答 訂房優惠報報 | sql移除全形空白
![](https://i.imgur.com/axBPWDg.jpg)