我有一个类型为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