sql - 试图找出 OPENJSON 查询的语法并卡住了
问题描述
我一直在努力从我试图加载到某些表中的 JSON 消息中提取数据。我可以让这个在它上面有一个名称/值对的消息工作,但另一条消息有第二个外部名称/值对。
DECLARE @json nvarchar(max) =
'{
"request":
{
"requestId" : "3a282d32-4ed4-48e8-a6c0-23cf4921737e",
"modelType" : "NEW"
}
}'
select 'request' as title, request.requestId , request.modelType
from openjson(@json)
with
(
request nvarchar(max) as json
)
as Projects
cross apply openjson (Projects.request)
with
(
requestId nvarchar(50),
modelType nvarchar(50)
) as request
这将按预期返回行,但是如果上面有额外的名称/值对,我该如何编写查询?像这样:
DECLARE @json nvarchar(max) =
'{
"request": {
"request":
{
"requestId" : "3a282d32-4ed4-48e8-a6c0-23cf4921737e",
"modelType" : "NEW"
}
}
}'
任何人都可以帮忙。我知道这可能真的很简单,但我似乎无法理解如何去做。我是我公司中唯一使用 JSON 的人,或者我会直接问他们。
先感谢您!
解决方案
还需要一个cross apply
来达到目标。
select 'request' as title, request.requestId , request.modelType
from openjson(@json)
with
(
request nvarchar(max) as json
)
as Projects
cross apply openjson (Projects.request)
with
(
request nvarchar(max) as json
) as subrequest
cross apply openjson (subrequest.request)
with
(
requestId nvarchar(50),
modelType nvarchar(50)
) as request
db<>fiddle中的演示
推荐阅读
- emacs - Doom Emacs:不想在 Slime-REPL 中自动完成
- swiftui - SwiftUI如何在不切换标签栏的情况下刷新一个标签视图
- android - google-cloud-speech 中的依赖冲突
- java - 附加错误从哪里来?
- javascript - 查找具有相同 prop 的对象并返回更新值及其关联的 prop
- php - Lumen 8.x 文件系统不工作。错误:未找到“League\Flysystem\AwsS3v3\AwsS3Adapter”类
- mysql - 如何使用 mysql 函数从 sting 中获取 id?
- c++ - 在 C++ 中,从大型文本文件集合中读取所有单词的最快方法是什么?
- javascript - react-bootstrap/Image 不加载 imgURL
- botframework - Azure 上 OAuth 连接设置中的 Microsoft 示例 52 和 AAD ConnectionName