我有一个SQL表,其中包含用于JSON数据的nvarchar(max)列。其中一个JSON属性是另一个JSON对象的字符串版本。这个内部JSON字面上包含转义引号等。示例:
{
"id": 55,
"innerJson": "{\"innerId\": 199}"
}
内部JSON长约10,000个字符,可以提供或者需要几千个字符。
我希望能够在SQL服务器中选择这个内部JSON,但是,我似乎遇到了4000个字符的限制。使用JSON_VALUE()并且使用JSON_QUERY()太简单太长了,这非常令人沮丧。
MSDN says"如果你必须返回大于4000个字符的标量值,请使用OPENJSON",但并不能真正描述如何。
我找到了一种方法来选择它,但它涉及嵌套的OPENJSON()调用:
select *
from OPENJSON((
select [value]
from OPENJSON((
select JsonColumn
from table
where Id = 55
))
where [key] = 'innerJson'
))
但是,这不起作用:
select *
from OPENJSON((
select JsonColumn
from table
where Id = 55
), '$.innerJson')
所以,我的问题:
有没有办法选择> 4000个字符串?
是否有更简洁的方式来选择" innerJson"不使用嵌套的OPENJSON调用?我是否必须嵌套它,因为它是一个字符串,而不是一个对象?
为什么第二个查询不起作用?是因为我遇到了4000个字符的限制吗?
谢谢!