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