Sqlserver 报错“参数数据类型 ntext/text 对于 replace 函数的参数 1 无效”的解决方案及原理分析扩展

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

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

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

这时我们可以使用max类型来解决这个问题。

原报错代码:


1

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

修改后可执行代码:


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‘);

原文地址:https://www.cnblogs.com/xiaoguozi/p/12656381.html

时间: 2024-08-23 19:07:34

Sqlserver 报错“参数数据类型 ntext/text 对于 replace 函数的参数 1 无效”的解决方案及原理分析扩展的相关文章

MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法

Ms - sql 数据库批量替换字符串 MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法 update ContentInfo set spcContent=replace(cast(spcContent as varchar(max)),'http://www.buy5188.com/','http://www.epowerchina.com.cn/')

参数数据类型 text 对于 replace 函数的参数 1 无效

update article set article_content=REPLACE(Cast(article_content as varchar(max)),'?',' ') where article_id=191 原报错代码: 1update tablename set colname=replace(colname,'oldtext','newtext'); 修改后可执行代码: 1update tablename set colname=replace(Cast(colname as

GG同步到sqlserver报错一例 Invalid date format

在将Oracle表同步到sqlserver时,在sqlserver端应用数据时,可能会遇到这个报错. 2014-05-17 17:20:24 WARNING OGG-01154 SQL error -2147217887 mapping APPLSYS.FND_FLEX_VALIDATION_RULES to dbo.FND_FLEX_VALIDATION_RULES [SQL error -2147217887 (0x80040e21)] Parameter #: 12 Data Type:

IMPDP导入报错ORA-27040: 文件创建错误, 无法创建文件,remap_datafile参数解决

该参数可用于给泵出文件中的源数据库文件重新指定一个新的路径和名称,主要用在平台间的数据迁移. 用法: remap_datafile=source_file:target_file 在windows平台上的使用: impdp dbuser/dbuser full=y dumpfile=full.dmp logfile=full.log remap_datafile="F:\DB\ORADB\ORADATA\ORADB\MYDB1.ORA":"F:\app\guester\ora

jdbc连接sqlserver报错java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver

使用2008的数据库, 我已经引入的sqljdbc4的包,单还是报这个错,很奇怪突然想到在配置hibernate的时候,是拷贝下来的代码 然后到网上查了下, 因为是2008的版本驱动和2000的有点不同, 之前的都是可能是2000或者2005的class是com.microsoft.jdbc.sqlserver.SQLServerDriver 可是2008  去是com.microsoft.sqlserver.jdbc.SQLServerDriver 就这么改过来就可以了 jdbc连接sqlse

SQLServer 报错:用户、组或角色'XXX' 在当前数据库中已存在. 错误:15023解决方法

背景: 最近在迁移SQLServer数据库2008时,新建用户后,做用户映射时. SQLServer 报错:用户.组或角色'XXX' 在当前数据库中已存在. 错误:15023. 下面讲一下解决的方法. 分析:    将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户.    这种情况被称为存在"孤立用户".此时是不能通过新建登录或者是对同名登录授予对应数据库的"用户"权限来解决登录问题,    因为SQ

【Mysql】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案

普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题.涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点 Mysql 版本的限制,Mysql 5.5.3之前的版本,支持的utf8为3字节的,Mysql 5.5.3之后的版本支持utf8mb4 修改mysql的配置文件,windows下的为my

VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

编译mongodb-src-r2.2.2出现以下问题 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 这个是由于日志文件引起的,可以将 项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”. 或者将 项目\属性\配置属性\链接器\清单文件\生成清单:原来是“是”,改成“否”. 如果仍然无效,判断是否已经安装了VS2012,如果已经安装,需要安装VS2010 sp1补丁. VS2010 C++编译报错LINK : fa

mysql 存储 emoji报错( Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F)的解决方案

1.报错原因: mysql utf-8 编码储存的是 2-3个的字节,而emoji则是4个字节. 2.解决办法: 修改mysql的配置文件,windows下的为my.ini(linux下的为my.cnf),修改的内容都一样. [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server