我想把长度大于8000的字符串插入到类型为text的临时表变量中,为何执行以下代码查询出来为空declare @retTb table(retTxt text)
declare @i int
declare @str1 varchar(8000)
declare @str2 varchar(8000)
set @str1 = ''
set @str2 = ''
set @i =1
while @i <= 8000
begin
set @str1 = @str1 + 'a'
set @str2 = @str2 + 'b'
set @i = @i + 1
end
insert into @retTb select @str1+@str2select substring(retTxt,8001,10) from @retTb
declare @i int
declare @str1 varchar(8000)
declare @str2 varchar(8000)
set @str1 = ''
set @str2 = ''
set @i =1
while @i <= 8000
begin
set @str1 = @str1 + 'a'
set @str2 = @str2 + 'b'
set @i = @i + 1
end
insert into @retTb select @str1+@str2select substring(retTxt,8001,10) from @retTb
declare @i int
declare @str1 varchar(max)
declare @str2 varchar(max)
set @str1 = ''
set @str2 = ''
set @i =1
while @i <= 8000
begin
set @str1 = @str1 + 'a'
set @str2 = @str2 + 'b'
set @i = @i + 1
end
insert into @retTb select cast(@str1+@str2 as varchar(max))
select substring(retTxt,8001,10) from @retTb
select len(cast(retTxt as varchar(max))) as t from @retTb
--结果为
8000
--所以你截取字符串为空
declare @i int
declare @str1 varchar(max)
declare @str2 varchar(max)
set @str1 = ''
set @str2 = ''
set @i =1
while @i <= 8000
begin
set @str1 = @str1 + 'a'
set @str2 = @str2 + 'b'
set @i = @i + 1
end
insert into @retTb select @str1+@str2
select substring(retTxt,8001,10) from @retTb
insert into tb values('0123456789')
select substring(t,8000,1) from tb
也是空