[英]how to split ntext datatype data to store in database
我有一个ntext
类型的列,称为Emp_details_list
,它包含如下数据
emp1#@#emp2#@#emp3...
最多有2万个字符作为字符串,我存储在该列中,我需要将其拆分并保存在其他表EmpDet
和其他列( Single_Emp_det
)中,但是在拆分时,我无法将ntext
Single_Emp_det
为nvarchar
因此我使用了局部变量并声明为nvarchar(max)
并进行拆分,但是只有当我有8001个字符时显示异常,因为它无法存储,因此我只能存储8000个字符,因此我如何使用SQL Server中的拆分概念将整个ntext
数据存储在其他列中
因此,您可能会陷入Sql Server 2000的困境。如果不能使用nvarchar(max),则一种可能的方法是使用子字符串函数并将ntext循环复制到可管理的varchar(8000)块中。 在每次迭代中,保存“最后一个#之后的部分块”,以在下一次迭代中使用。 因此,您基本上遍历了表,在此循环中,再次遍历了8k块中的ntext字段值,然后执行其余操作。 希望它足够清楚。
正如其他人已经提到的那样,您可以轻松地在nvarchar(max)中存储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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.