我从表中获取了值,我需要从它们创建一个JSON。 当我使用几个字段(smalll字符串)时,JSON是有效的,插入完整的数据集。
set @MediaType = '['
当我使用完整的字段集时,其中一些是varchar(max),结果的占位符是varchar(max),只返回~45k字符。
select @JSON =
(
select '{' + STUFF((
select
@dSQL
+ ',"Name":"' + rtrim(@Name) + '"'
--+ ',"Name":"LOLLOLOLOLTROLOLOLo"'
+ ',"Descr":"' + rtrim(replace(coalesce(@Descr,''),'"','''''')) + '"'
--+ ',"Descr":"' + 'Zvezda, Zvezda! ' + '"'
--+ ',"Tech":"' + replace(coalesce(@Tech,''),'"','''''') + '"'
+ ',"Tech":"' + 'Nije, nego Dinamooooo, o Dinamoooo! ' + '"'
+ ',"update_id":"' + rtrim(@update_id) + '"'
+ ''
for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') + '}'
)
每次从游标中获取都会生成一个" {...}",后者我会使用
set @MediaType = (select (@MediaType + @JSON + ','))
另外,
set @MediaType = (select SUBSTRING(@MediaType, 1, (len(@MediaType)-1)))
set @MediaType = (select (@MediaType + ']'))
如果我使用短字符串作为Descr和Tech,一切都很好,但是当我使用表格中的真实数据时(@Descr和@Tech,声明为varchar(max),@ MediaType只有不到50k字符?
(我相信有一个更好的方法,我有美丽的python代码,但我必须在t-sql中做,我不是专家,你可以看到)
Thx