我有一個表格,我需要替換列中的某些值。使用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