Sqlserver 错误消息:参数数据类型ntext 对于replace函数的参数1无效。最终解决办法
摘要:
缘由:在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');