Sqlserver 错误消息:参数数据类型ntext 对于replace函数的参数1无效。最终解决办法

博主:jhchinajhchina 2023-11-11 354 0条评论
摘要: 缘由:在SQLSERVER数据查询中replace函数没法对表table中text/ntext类型的字段colname进行了字符串操作。解决方法:将text看成varchar(实际...

缘由:在SQLSERVER数据查询中replace函数没法对表table中text/ntext类型的字段colname进行了字符串操作。

解决方法:将text看成varchar(实际内容长度低于8000字节时)或把ntext看成nvarchar(实际内容长度低于4000字节时)。

原报错代码:

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

修改后Sqlserver语句:

text字段类型代码:

update tablename set colname=replace(Cast(colname as varchar(8000)),'oldtext','newtext');

ntext字段类型代码:

update tablename set colname=replace(Cast(colname as nvarchar(4000)),'oldtext','newtext');

tablename:表名

colname:列名

oldtext:原本内容

newtext:想要替换成什么

但这有个问题,当text字段内容长度超过8000或ntext字段内容长度超过4000字节时多出的字节会被截断而忽略掉。

那如何最终解决这个问题呢?我们可以使用max类型来解决这个问题。

最终修改Sqlserver执行语句如下:

update tablename set colname=replace(Cast(colname as nvarchar(max)),'oldtext','newtext');