MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法 |
||||||||
本文标签:MSSQL 但是我们可以换一种方法解决这个问题 。下面就来分析下解决办法 。 对text或ntext类型的数据在查询中不能进行字符串操作 。这时用得最多的是把text当作varchar(实际内容长度低于8000字节时)或把ntext当作nvarchar(实际内容长度低于4000字节时)来处理 。但是这样处理也不是非常妥当毕竟如果text字段内容超过8000了岂不是要被截断或者忽略掉 。 复制代码 代码如下: update table set column=replace(cast(column as varchar(max)),123′,abc) 解释: 其中的table 代表表名,column代码该表中需要替换的列 。改语句的作用是把table表中column列中所有出现123的都给替换为abc 。 附:max类型的介绍 Microsoft SQL Server 2005 中引入了 max 说明符 。此说明符增强了 varchar、nvarchar 和 varbinary 数据类型的存储能力 。varchar(max)、nvarchar(max) 和 varbinary(max) 统称为大值数据类型 。您可以使用大值数据类型来存储最大为 2^31-1 个字节的数据 。 注意: 当 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 变量 。 下表说明了大值数据类型和 SQL Server 早期版本中与之对应的数据类型之间的关系 。
* SQL Server 6.5 版本的客户端不支持 ntext 数据类型,因此无法识别 nvarchar(max) 。
复制代码 代码如下: COL_LENGTH
CHARINDEX PATINDEX LEN DATALENGTH SUBSTRING |