SQL Server – Work with JSON
2021/10/20 19:11:13
本文主要是介绍SQL Server – Work with JSON,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
JSON 是一个很好的格式, array, object 就能表达一个表格了.
如果想保存一些结构格式, 又不想用表格这么大费周章的话, JSON 会是很好选择.
比如我用它来记入 Audit Trial, 每一个请求的 post data 直接记入到一个 column 里面.
SQL Server 是在 2016 版本开始支持 JSON 格式的.
之前写过一些小笔记
主要参考
JSON data in SQL Server
Index JSON data
实战
创建 JSON Column
CREATE TABLE TestJson ( Id int IDENTITY CONSTRAINT PK_TestJson_Id PRIMARY KEY, JsonData nvarchar(max) CONSTRAINT [Content should be formatted as JSON] CHECK(ISJSON(JsonData)>0) );
Json Column 其实就是 nvarchar 来的, 只是在上面加了一层 constraint 而已. ISJSON 是一个判断 text 是不是 JSON 的方法.
进资料
没什么特别的, 进 string 就可以了
INSERT INTO TestJson (JsonData) VALUES ('{ "name": "Derrick", "age": 11, "good": true }'), ('{ "name": "Keatkeat", "age": 12, "good": false }');
Query
SELECT JSON_VALUE(JsonData, '$.name')as [Name], JSON_VALUE(JsonData, '$.age') as Age, CAST(JSON_VALUE(JsonData, '$.good') as bit) as Good, * FROM TestJson WHERE JSON_VALUE(JsonData, '$.good') = 'true' ORDER BY JSON_VALUE(JsonData, '$.name');
通过 JSON_VALUE 这个方法就可以获取到对象属性值, 然后就可以当成普通 column 值来处理了.
注: boolean 被 parse 出来是 nvarchar 哦, 可以通过 cast 换成 bit. number parse 出来时 int, 这个是对的.
Update
UPDATE TestJson SET JsonData = JSON_MODIFY(JsonData, '$.age', 100);
通过 JSON_MODIFY 就可以修改 JSON 内容了, 它会返回一个 JSON string, 有一种 immutable 的 feel...
如果要同时修改多个属性值也非常简单
UPDATE TestJson SET JsonData = JSON_MODIFY(JSON_MODIFY(JsonData, '$.age', 100), '$.good', 'false') ;
只要嵌套一下就可以了哦....
JSON Array
TODO...
JSON Index
JSON 要 filter, orderby 快的话, 做法是通过 computed column 或者是索引来优化.
具体看这篇, 我就不写了.
这篇关于SQL Server – Work with JSON的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15useCallback教程:React Hook入门与实践
- 2024-11-15React中使用useContext开发:初学者指南
- 2024-11-15拖拽排序js案例详解:新手入门教程
- 2024-11-15React中的自定义Hooks案例详解
- 2024-11-14受控组件项目实战:从零开始打造你的第一个React项目
- 2024-11-14React中useEffect开发入门教程
- 2024-11-14React中的useMemo教程:从入门到实践
- 2024-11-14useReducer开发入门教程:轻松掌握React中的useReducer
- 2024-11-14useRef开发入门教程:轻松掌握React中的useRef用法
- 2024-11-14useState开发:React中的状态管理入门教程