添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
update SupplyInfo 
set ProdInfo=replace(ProdInfo,'中国总代理','中国指定代理')
where CompanyID=83406

因为列ProdInfo为text类型,即SQL语句中用到replace时若操作列类型为text类型会有MSSQL报错:参数数据类型text对于replace函数的参数1无效。
原因:对text或ntext类型的数据在查询中不能进行字符串操作。
解决方法:将text当作varchar(实际内容长度低于8000字节时)或把ntext当作nvarchar(实际内容长度低于4000字节时)。但是当text字段内容长度超过8000或ntext字段内容长度超过4000字节时多出的字节会被截断而忽略掉。这时我们可以使用max类型来解决这个问题。

正确语句如下:

update SupplyInfo 
set ProdInfo=replace(cast(ProdInfo as varchar(max)),'中国总代理','中国指定代理')
where CompanyID=83406

附:max类型的介绍
varchar(max)、nvarchar(max) 和 varbinary(max) 统称为大值数据类型。可以使用大值数据类型来存储最大为 2^31-1 个字节的数据。
max 说明符是在Microsoft SQL Server 2005 中引入的。此说明符增强了 varchar、nvarchar 和 varbinary 数据类型的存储能力。

当 sp_tableoption 存储过程的 ‘large value types out of row’ 选项设置为 OFF 时,大值类型的行内存储限制为 8000 个字节。当此选项设置为 ON 时,只在行内存储 16 字节的根。可查找参考关于sp_tableoption (Transact-SQL)的内容。

大值数据类型在行为上和与之对应的较小的数据类型 varchar、nvarchar 和 varbinary 相似。这种相似使 SQL Server 能够更高效地存储和检索大型字符、Unicode 和二进制数据。

因为有了大值数据类型,使一些使用 SQL Server 的方式是使用早期版本的 SQL Server 中的 text、ntext 和 image 数据类型所没有的。例如,在 SQL Server 2005 中,您可以定义能存储大量数据(最多可达 2^31 字节的字符、整数和 Unicode 数据)的变量。可查找参考关于Transact-SQL 变量的内容。
Transact-SQL 变量示例:
DECLARE @MyURL nvarchar(2000);
set @MyURL=’ http://blog.csdn.net/yiyelanxin ‘;

下面是大值数据类型和 SQL Server 早期版本(如SQL 2000)中与之对应的数据类型之间的关系。

大值数据类型     早期版本中的 LOB
varchar(max)     text*
nvarchar(max)     ntext*
varbinary(max)    image

SQL Server 6.5 版本的客户端不支持 ntext 数据类型,因此无法识别 nvarchar(max)。

在SQL 2005中请使用 varchar(max)、nvarchar(max) 和 varbinary(max) 数据类型,而不要使用 text、ntext 和 image 数据类型。

大值数据类型在行为上和与之对应的较小的数据类型 varchar(n)、nvarchar(n) 和 varbinary(n) 相同。下面介绍大值数据类型在某些特定情形下的使用:

游标
由于可以定义大值数据类型变量,便可以将 FETCH 返回的大值数据类型列中的数据赋给本地变量。可查找参考关于 FETCH (Transact-SQL)的内容。
使用大值数据类型不影响游标的强制实施游标类型转换用法。

成块更新
UPDATE 语句现在支持 .WRITE( ) 子句对基础大值数据列进行部分更新。这类似于 SQL Server 早期版本中所支持的对 text、ntext、image 数据类型的文本指针操作、WRITETEXT 和 UPDATETEX。可查找参考关于UPDATE (Transact-SQL)的内容。

触发器
支持对插入的和删除的表中的大值数据类型列引用上使用 AFTER 触发器。可查找参考关于CREATE TRIGGER (Transact-SQL)的内容。

字符串函数
内置的可操作字符和二进制数据的字符串函数有所增强,可支持大值数据类型的参数。这些函数包括:
COL_LENGTH
CHARINDEX
PATINDEX
LEN
DATALENGTH
SUBSTRING

SQL 参数 格式 例如:select * from tb where nd=:nd and yd=:yd 想一次性把所有 SQL 语句中 参数 (带冒号)全部换成 数据 , 开始 选定用正则表达式。 原先写这样 代码如下: str sql . replace (/(:\w+)/g,(“$1”).substring(1)); “$1” 总是本解析成字符串,而不是匹配的值 换成 代码如下: str sql . replace (/(:\w+)/g,$1); 又不能给出匹配值,$1 要想得到匹配值必须要带双引号。 后突发奇想加了个方法 把$1 当成 参数 传递,如下 代码如下: var str sql = str sql .re use master go if object_id('sp_ replace Text Col') is not null drop proc sp_ replace Text Col go create procedure sp_ replace Text Col @tableName sysname,@colName sysname,@oldStr nvarchar(512),@newStr ... 下面的 函数 和语句可以与 n text text 或 image 数据 一起使用。 函数 语句 DATALENGTH READ TEXT PATINDEX SET TEXT SIZE SUBSTRING UPDATE TEXT TEXT PTR WRITE TEXT TEXT VALID 主题: text 字段1:替换 --创建 数据 测试环境create tabl... 列 replace 类型 text 参数 数据 类型 text 对于 replace 函数 参数 1 无效 。 处理方式:将 text 类型 转换为varchar 类型 进行处理 文章写的很详细https://blog.csdn.net/yiyelanxin/article/details/72863999 向大佬致敬∠(°ゝ°) **原执行 sql :**在content列,修改test111111为testStr2222222 update t_table set content= replace (content,'test111111','testStr2222222') 修改后执行 sql : update t_table set content= replace (convert(varchar(8000),conte... 在 sql 中使用 replace 函数 可以替换某个字段中的一些内容,但是如果字段是 text 类型 那么使用 replace 函数 就会报“ 参数 数据 类型 text 对于 replace 函数 参数 1 无效 。”,这个错误说明对 text 或n text 类型 数据 在查询中不能进行字符串操作 但是我们可以换一种方法解决这个问题。下面就来分析下解决办法。 对 text 或n text 类型 数据 在查询中不能进行字符串操作。这时用 说到 数据 库中文本的替换,一般人首先想到的是 Replace 函数 : update Table set Column= Replace (Column,’oldkeyword’,'newkeyword’) 不过,当Column为 text 或n text 时,用以上的查询就会报错“ 参数 数据 类型 text 对于 replace 函数 参数 1 无效 ”。原来问题是出在对 text 或n text 类型 数据 在查询中不能进行字符串操作。这时用得最多的便是把 text 当作varchar(实际内容长度低于8000字节时)或把ntex MS SQL 参数 数据 类型 n text 对于 replace 函数 参数 1 无效 。 错误提示: 参数 数据 类型 n text 对于 replace 函数 参数 1 无效 。 解决办法:将n text 类型 字段改为nVarchar(max) 类型 。 对 text 或n text 类型 数据 在查询中不能进行字符串操作。这时用得最多的是把 text 当作varchar(实际内容长度低于8000字节时)或把n text 当作nvarchar(实际内容长度低于4000字节时)来处理 update Table set Column UPDATE    outhouseSET              csshuoming = REPLACE (cast(csshuoming as   varchar(8000)), '', ' ') SQL 中的 REPLACE 替换字符 函数 的用法(使之支持 text /n text ) 语法 REPLACE ( original-string, search-string, replace -string ) 参数 如果有某个 参数 为 NULL,此 函数 返回 NULL。original-string     被搜索的字符串。可为任意长度。search-st 方法一(推荐):update tablename set fieldA= replace (cast(fieldA as varchar(8000)) ,aa,bb)这样的语句。 SQL replace 替换n text , text 字段部分内容使用说明: replace (cast(fieldA as varchar(8000)) ,aa,bb)大众替换普通字段方法Update    famo