sql - 将简单 JSON 转换为 SQL SELECT 语句
问题描述
我有以下 JSON:
DECLARE @json NVARCHAR(MAX)
SET @json = N'[
{"@odata.context":"http://www.example.com","value":[
{"financialmovements_ID":1,"Data":"2020-02-10T00:00:00Z","ES":"E","Descri\u00e7\u00e3o":"FIV-005 3\u00baTRM19/20","Valor":455.9700,"ActGlbActDescr":"Reg. Financ. Pag.","ActGlbContr":"FIV005","ActGlbContrDescr":"Cond FIV-005"},
{"financialmovements_ID":2,"Data":"2019-11-14T00:00:00Z","ES":"E","Descri\u00e7\u00e3o":"Pag. Cond FIV005","Valor":1958.6600,"ActGlbActDescr":"Reg. Financ. Pag.","ActGlbContr":"FIV005","ActGlbContrDescr":"Cond FIV-005"}]}
]'
我正在尝试转换为 SQL,如下所示:
SELECT *
FROM OPENJSON(@json, '$.value')
WITH (
--financialmovements_ID INT '$.financialmovements_ID',
Data DATETIME2 '$.Data',
[E/S] NVARCHAR(max) '$.ES',
DescTrs NVARCHAR(max) '$."Descri\u00e7\u00e3o"',
Valor MONEY '$.Valor',
ActGlbActDescr NVARCHAR(max) '$.ActGlbActDescr',
ActGlbContr NVARCHAR(max) '$.ActGlbContr',
ActGlbContrDescr NVARCHAR(max) '$.ActGlbContrDescr'
);
我得到的只是一个空的结果集(应该是 2 行时为 0 行),我做错了什么?
解决方案
您的 JSON 在整个内容周围都有方括号,这意味着它是一个数组(它只有一个元素),因此您的 OPENJSON 起点必须是$[0].value
推荐阅读
- android - Android Espresso DrawerActions.open() 不起作用
- c++ - 将 unsinged int(使用 .size())分配给一维浮点向量
- python - python列表理解的语法错误
- python - django 博客中的评论部分不会显示在每个单独的帖子下?
- javascript - 当我调用 onChange 在反应中收集输入字段数据时,需要很长时间才能输入样式化的 M-UI TextFields
- javascript - 从一个目录导入多个组件
- javascript - 清空 redux 存储,useSelector 不返回任何内容
- ubuntu - 当其他列值在 Ubuntu 中的引号内有逗号时,将一个列值复制到 CSV 中的另一个
- scala - Scala REPL 中的浮点文字错误
- python - PYMC3 'FreeRV' 对象不支持项目分配错误