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