sql - T-SQL - JSON 嵌套对象 - 1 行与多行
问题描述
这是表定义:
key_en, text_en, html_text_en, key_fr, text_fr, html_text_fr
这是我的查询:
SELECT
[key_en] AS 'en.key'
,[text_en] AS 'en.text'
,[html_text_en] AS 'en.htmltext'
,[key_fr] AS 'fr.key'
,[text_fr] AS 'fr.text'
,[html_text_fr] AS 'fr.htmltext'
FROM [MyContent]
FOR JSON PATH;
我得到的 JSON 结果是正确的。
[
{
"en": {
"key": "key en",
"text": "text en",
"htmltext": "html en"
},
"fr": {
"key": "key fr",
"text": "text fr",
"htmltext": "html fr"
}
},
{
"en": {
"key": "key2 en",
"text": "text2 en",
"htmltext": "html2 en"
},
"fr": {
"key": "key2 fr",
"text": "text2 fr",
"htmltext": "html2 fr"
}
}
]
然而,结果集在单行中(非常长的字符串)。
我想将结果集分布在与表中的数据一样多的行中。预期的结果应该是:
ROW 1
{
"en": {
"key": "key en",
"text": "text en",
"htmltext": "html en"
},
"fr": {
"key": "key fr",
"text": "text fr",
"htmltext": "html fr"
}
}
ROW 2
{
"en": {
"key": "key2 en",
"text": "text2 en",
"htmltext": "html2 en"
},
"fr": {
"key": "key2 fr",
"text": "text2 fr",
"htmltext": "html2 fr"
}
}
为了实现我的目标,我必须带来哪些改变?
解决方案
You can use this modified query which will return a row of JSON per row of your table:
SELECT (
SELECT [key_en] AS 'en.key',
[text_en] AS 'en.text',
[html_text_en] AS 'en.htmltext',
[key_fr] AS 'fr.key',
[text_fr] AS 'fr.text',
[html_text_fr] AS 'fr.htmltext'
FOR JSON PATH
)
FROM [MyContent]
推荐阅读
- javascript - 在 keyup 的输入框中查找 http:// 或 https:// 并将其删除的脚本
- opencv - Opencv(JS)从图像中选择手指区域
- api - 在 Windows 服务中自托管 ASPNET 核心 5.0 Web API 的问题
- sql-server - SQL 连接查询与“on”异常
- next.js - 从 next.js 项目上传源地图到哨兵的推荐方法是什么
- c++11 - 字符串化宏中的参数
- python - 我想将我的 Minecraft 控制台数据发送到我的应用程序中
- powershell - 在我的函数中使用 Switch 的问题
- amazon-web-services - 将秒数格式化为 Redshift 中的间隔 HH:MM:SS
- swift - Swift AutoDiff:我们如何使结构具有一个成员变量,该成员变量是多个参数的可微函数?