如何分割文本数据类型数据存储在数据库中



我有一个类型为ntext的列称为Emp_details_list,它由以下数据组成:

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

最多2万个字符,字符串,我在这列存储,我需要把它并保存在其他表EmpDet和其他列(Single_Emp_det)虽然分裂我不能把ntext nvarchar所以使用局部变量声明为nvarchar(max)和分裂,但我只可以存储8000个字符如果我有8001个字符显示异常,因为它不能存储所以我怎么能将整个ntext数据存储在其他列使用SQL Server中分裂的概念

所以你可能被Sql server 2000困住了。如果不能使用varchar(max),一种可能的方法是使用substring函数并在循环中将文本复制到可管理的varchar(8000)块中。在每次迭代中,保存"最后一个#之后的chunk部分",以便在下一次迭代中使用。你基本上在你的表上循环,在那个循环中再一次以8k为块循环文本字段值,然后做剩下的。

正如其他人已经提到的,您可以轻松地在nvarchar中存储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

最新更新