Sqlserver 報錯「參數數據類型 ntext/text 對於 replace 函數的參數 1 無效」的解決方案及原理分析擴展

緣由:在數據查詢中replace函數沒法對錶table中text/ntext類型的字段colname進行了字符串操做。sql

解決方法:將text看成varchar(實際內容長度低於8000字節時)或把ntext看成nvarchar(實際內容長度低於4000字節時)。函數

可是當text字段內容長度超過8000或ntext字段內容長度超過4000字節時多出的字節會被截斷而忽略掉。spa

這時咱們可使用max類型來解決這個問題。code

 

原報錯代碼:blog

1
update  tablename  set  colname= replace (colname, 'oldtext' , 'newtext' ); 

修改後可執行代碼:ci

1
update  tablename  set  colname= replace ( Cast (colname  as  varchar (8000)), 'oldtext' , 'newtext' );
1
update  tablename  set  colname= replace ( Cast (colname  as  nvarchar(4000)), 'oldtext' , 'newtext' );
相關文章
相關標籤/搜索