我有一个表格,我需要替换列中的某些值。使用SQL Server替换字符串替换函数 - 字符串有超过4000个字符 - 该怎么办?
的数据库SQL Server上运行2005
的问题是,一些行包含超过4000个字符,这是给REPLACE
功能有些麻烦,因为它要求我投的第一个参数数据类型NVARCHAR
,因此超过4000的任何字符都将被截断。
除了编写处理此问题的应用程序之外,是否有任何解决方法?
讨论中的查询是:
SELECT
Replace(cast([Database].[dbo].[fruits].[Tekst] as NVARCHAR(MAX)), 'bananas', 'apples')
FROM [Database].[dbo].[fruits]
列fruits
是数据类型Text
理解的任何输入的。
为什么'nvarchar(max)'在4000个字符时会导致截断?这会为你带来什么回报? 'SELECT LEN(REPLACE(CAST('A'as NVARCHAR(MAX)),16000),'A','B'))'你确定你的问题不仅仅是它在SSMS中被截断结果如何? – 2011-03-09 12:31:27
因为'nvarchar'的最大值是4000:http://msdn.microsoft.com/zh-cn/library/ms186939.aspx。你给我的查询返回值16000,但我怎样才能让它迭代通过列来测试值?用柱子替换铸件中的'A'并不能解决问题。 – MadsMadsDk 2011-03-09 12:47:15
@MadsMadsDk - No'4000'是最大的显式值。使用'max'可以保存高达2GB的数据(10亿个双字节字符) – 2011-03-09 12:50:00