0

我有一个ntext名为的列Emp_details_list,它包含类似的数据

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

最多它有 20,000 个字符作为字符串,我存储在该列中,我需要将其拆分并保存在其他表EmpDet和其他列(Single_Emp_det)中但是在拆分时我不能ntextnvarchar使用局部变量并声明as nvarchar(max)和拆分,但我只能存储 8000 个字符,只有当我有 8001 个字符时它显示异常,因为它无法存储所以我如何ntext使用 SQL Server 中的拆分概念将整个数据存储在其他列中

4

2 回答 2

0

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

这是一个从 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
于 2013-04-01T08:54:47.833 回答
0

所以你可能被 Sql server 2000 卡住了。如果你不能使用 nvarchar(max),一种可能的方法是使用 substring 函数并在循环中将你的 ntext 复制到可管理的 varchar(8000) 块中。在每次迭代中,保存“最后一个 # 之后的部分块”,以在下一次迭代中使用。所以你基本上循环你的表,在那个循环中再次循环 ntext 字段值,以 8k 为单位,然后做剩下的事情。希望它足够清楚。

于 2013-03-31T02:23:45.927 回答