2013-03-30 48 views
0

我有一個名爲Emp_details_listntext類型的列來存儲,它由數據像如何分割NTEXT數據類型的數據在數據庫

emp1#@#emp2#@#emp3... 

至多隻擁有20萬個字的字符串,我存儲在該列和我需要拆分它並保存在其他表EmpDet和其他列(Single_Emp_det),但在分裂我不能投ntextnvarchar所以我使用局部變量和宣佈爲nvarchar(max)和分裂,但我可以只存儲8000字符只有當我有8001個字符,它顯示異常,因爲它不能存儲,所以我如何存儲wh ole ntext其他列中的數據使用SQL Server中的拆分概念

+0

什麼版本的SQL Server?你爲什麼使用'ntext'而不是'nvarchar(max)'? –

+1

'nvarchar(max)'可以存儲**高達2 GB **的數據 - 絕對**多於**多於8000個字符... –

+0

可以讓我知道可以存儲的字符的確切數量爲nvarchar(最大)? –

回答

0

因此,您可能會陷入Sql server 2000中。如果您不能使用nvarchar(max),一種可能的方法是使用substring函數並將您的ntext在循環中可管理的varchar(8000)塊。在每次迭代中,保存'最後一個#之後的部分塊',以用於下一次迭代。所以你基本上遍歷你的表,在這個循環內循環遍歷8k塊的ntext字段值,然後完成剩下的工作。希望它很清楚。

+0

現在我正在使用SQL Server 2005,並且我正在使用ntext數據類型。發送到數據庫的字符串是超過2萬字符,所以我使用ntext因爲ntext可以很容易地存儲它作爲nvarchar(max)可以存儲只有8千個字符,因爲我知道這樣使用ntext @Aaron Bertrand –

+0

這是有點難以添加分隔符尾8000字符可以解釋我怎麼可以添加8000分貝後的分隔符和我的麪糰是我怎樣才能知道在sqlserver2005字符串中的數字字符是der任何事情找到?很多for ur支持answer.pls幫助我@Brian –

+0

@MounikaReddy - 不知道你有什麼想法,nvarchar(最大)有8000個字符的限制。它沒有。你的20K很容易被nvarchar(max)處理。你用nvarchar(max)沒問題。嘗試一下。 – Brian

0

正如其他人已經提到,你可以很容易地在nvarchar(max)中存儲20000個字符。轉換這些類型時可能會出錯。

下面是一個從nvarchar(max)轉換爲nvarchar(max)的例子,它清楚地顯示瞭如何在那裏存儲20000個字符。

DECLARE @v1 nvarchar(max) 

DECLARE @v2 nvarchar(max) 



create table #textExample 

(

    id int, 

    t1 ntext 

) 



declare @count int 

set @v1 = '' 

SET @count = 0 

while @count < 20000 

begin 

    set @v1 = @v1 + '1' 

    set @count = @count + 1 

end 

--converting nvarchar(max) to ntext 

insert into #textExample 

values (1, CONVERT(ntext,@v1)) 



select * from #textExample 

-- converting ntext back to nvarchar(max) 

SET @v2 = CONVERT(nvarchar(max), (select t1 from #textExample where id = 1)) 

select @v2, LEN(@v2) 





drop table #textExample