t-sql选择东西限制

时间:2016-03-11 11:01:05

标签: sql-server json ssms

我从表中获取了值,我需要从它们创建一个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

0 个答案:

没有答案