如何将ntext数据类型数据拆分为存储在数据库中

时间:2013-03-30 13:10:43

标签: sql-server vb.net

我有一个名为ntext的{​​{1}}类型的列,它包含

等数据
Emp_details_list

最多它有2万个字符作为字符串,我存储在该列中,我需要将其拆分并保存在其他表 emp1#@#emp2#@#emp3... 和其他列(EmpDet)中,但在拆分时我无法将Single_Emp_det强制转换为ntext所以使用局部变量并声明为nvarchar并进行拆分,但只有当我有8001个字符才会显示异常时我只能存储8000个字符,因为它可以存储,以便如何使用SQL Server中的拆分概念将整个nvarchar(max)数据存储在其他列中

2 个答案:

答案 0 :(得分:0)

所以你可能坚持使用Sql server 2000.如果你不能使用nvarchar(max),一种可能的方法是使用substring函数并将你的ntext复制到循环中可管理的varchar(8000)块。在每次迭代中,保存“最后一个#”之后的“部分块”,以便在下一次迭代中使用。所以你基本上循环遍历你的表,在那个循环中再次循环遍历8k块的ntext字段值并完成剩下的工作。希望它足够清楚。

答案 1 :(得分:0)

正如其他人已经提到的,您可以轻松地在nvarchar(max)中存储20000个字符。转换这些类型时,你可能做错了。

以下是转换为和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