SQL server 特殊字元"u0000"處理

kowqq發表於2024-08-27

某天,接到使用者反饋點選某個專案分組的時候頁面報錯,點選其他專案不報錯。

初步以為是下標數字特殊符號導致的。透過前臺輸出對應的數值後發現該欄位末尾有個“\u0000”特殊字元(ASCII字元char(0))。通常是匯入資料時的格式問題或是程式處理時將頁面中的換行字元儲存資料庫導致的。

像SQL server的SSMS中一般是不顯示該字元的。透過DataGrip工具查詢該欄位,發現有這種特殊字元(需要將游標移動至該欄位中)。

因此需要在資料庫中將該表欄位中包含此字元的都要查詢出來進行處理掉。

但是查詢該特殊符號,不能簡單的用 like '%nul%'或者直接將該段複製出來進行模糊查詢。需要進行特殊的字元編碼進行轉義查詢。

select * from tablename where columnname COLLATE Latin1_General_BIN LIKE '%' + CHAR(0) + '%'

最後透過replace函式進行替換掉。

update tableName set columnName = replace( columnName COLLATE Latin1_General_BIN , char(0) , '') where xxxx=xxx

注意:需要將 COLLATE Latin1_General_BIN 放到要替換的欄位名稱後面。

參考連結 https://www.cnblogs.com/BinBinGo/p/11892154.html

相關文章