详细解释js1:使用TSQL查询数据和更新JSON数据
JSON是一种非常流行的数据交换数据格式,主要用于网络和移动应用。JSON使用键/值对存储数据,表示两种复杂的数据类型:嵌套键-值对和数组。只能使用逗号(引用键)和括号(引用数组元素)来路由到指定的属性或成员,这很容易使用并且功能强大。在SQL Server 2016中,支持JSON格式。使用Unicode字符类型表示JSON数据,可以对JSON数据进行校验、查询和修改。推荐一个json验证和格式化工具:JSON格式化程序。
首先,定义并验证JSON数据
使用nvarchar表示JSON数据,通过ISJSON函数验证JSON数据是否有效。
声明@ JSON nvarchar(max)set @ JSON=N“{ info }”: { ' type ' :1,' address ' : { ' town ' : ' Bristol ',' county ' : ' avon ',' Country' :' England'},' tags' : ['sport ',' water polo']},' type ' : ' basic ' } '选择isjson (@ JSON) isjson函数具有返回0,表示该字符串不是JSON数据;返回空值,表示表达式为空;
第二,JSON数据路径表达式
路径表达式分为两部分:路径模式和路径。路径模式是可选的,有两种模式:宽松和严格。
1、路径模式
在路径表达式的开头,可以通过宽松或严格的关键字显式声明路径模式。如果没有声明,默认的路径模式是宽松的。在lax模式下,如果路径表达式错误,JSON函数返回NULL。在严格模式下,如果Path表达式错误,JSON函数会抛出一个错误;
2.路径表达式
路径是访问JSON数据的方式,有四种操作符:
$:表示整个JSON数据的内容;逗号。表示JSON对象的成员,也称为、字段或键;括号[]:表示数组中的元素,元素的起始位置为0;键名:键的名称,指对应的值;通过密钥名;如果键名包含空格、$、逗号和括号,请使用双引号。例如,以下JSON数据可以通过路径表达式路由到JSON的各种属性:
{ ' people ' :[{ ' name ' : ' John ','姓氏' :' doe'},{'name' :' Jane ','姓氏' : null,' active' : true}]路径表达式的查询数据为
$:表示JSON的内容,是最外面大括号里的所有Item。在这个例子中,它是一个people数组,数组的下标从0开始;$.people[0]:表示people数组的第一个元素:{ ' Name ' : ' John','姓氏' : null,'活动' : true} $。人[0]。名称:从人员数组的第一个元素,查询Key为名称的Item对应的数据。这个例子是$。人[1]。姓氏:人阵中间有一个姓氏字段。因为路径表达式没有声明路径模式,所以默认值是宽松的。当路径表达式中有错误时,为空;被返回。第三,通过Path查询JSON数据
1、查询标量值(JSON_VALUE)
使用JSON_VALUE(表达式,路径)函数,根据路径参数从JSON数据返回标量值,返回的数据为字符类型。
声明@ JSON nvarchar(max)set @ JSON=N“{ info }”: { ' type ' :1,' address ' : { ' town ' : ' Bristol ',' county ' : ' avon ',' country':'england' },' tags':['sport ',' water polo'] },' type ' : ' basic ' } '选择json_value(@json,$。type ')作为类型,json_value(@json,$.info.type ')作为info_type,json_value(@json,$.info.address.town)作为城镇,json_value(@json,$.info.tags[0]')作为标记
2.返回JSON数据(JSON_QUERY)
使用JSON_QUERY(表达式[,路径])函数,根据路径参数返回JSON数据(JSON片段);参数路径是可选的。如果未指定选项参数,默认路径为$,即返回整个JSON数据。
声明@ JSON nvarchar(max)set @ JSON=N " { info } " : { ' type ' :1,' address ' : { ' town ' : ' Bristol ',' county ' : ' avon ',' country':'england' },' tags':['sport ',' water polo'] },' type ' : ' basic ' } '选择json_query(@json,$ ')作为JSONinfo’)作为信息,json_query(@json,$。信息。地址')作为信息_address,json_query(@json,$。信息。标签')作为信息_ tags
四,通过小路修改JSON数据
使用JSON_MODIFY(表达式、路径、新值)修改JSON数据中的属性值,并返回修改之后的JSON数据,该函数修改JSON数据的流程是:
修改现有的属性:按照参数小路从JSON数据中找到指定的属性,将该属性的价值修改为参数新价值,返回值是修改之后的JSON数据;新增新的键值对(键:值对):如果JSON数据中不存在指定的属性,那么按照参数路径,在指定的路径上新增键值对;删除键值对(键:值对):如果参数新价值的值是空值,那么表示从JSON数据中删除指定的属性;附加关键字:用于从JSON数组中,追加一个元素;示例,对JSON数据进行更新、插入、删除和追加数据元素
声明@ info nvarchar(100)=" ' name ' : ' John ',' skills':['c# ',' SQL ']}"-更新名称集@info=json_modify(@info,$ .姓名',' mike') -插入姓氏集@info=json_modify(@info,$ .姓氏,' smith') -删除名称集@info=json_modify(@info,$ .名称',空值)-添加技能集@info=json_modify(@info,' append $ .技能','蔚蓝
五,将JSON数据转换为关系表
OPENJSON函数是一个行集函数(行集),能够将JSON数据转换为关系表,
OPENJSON(jsonExpression [,路径] ) [ WITH (colName类型[ column_path ] [ AS JSON ] [,colName类型[ column_path ] [ AS JSON ] ] [, n]]]路径参数:也叫表格路径,指定关系表在JSON数据中的路径;列路径参数:基于小路参数,指定每个圆柱在关系表JSON中的路径,应总是显式指定列路径;作为JSON属性:如果指定作为JSON属性,那么圆柱的数据类型必须定义为nvarchar(最大值),表示该圆柱的值是JSON数据;如果不指定作为JSON属性,那么该圆柱的值是标量值;随着选项:指定关系表的模式,应总是指定随着选项;如果不指定随着选项,那么函数返回键,值和类型三列;示例,从JSON数据中,以关系表方式呈现数据
声明@ JSON nvarchar(max)set @ JSON=N " { info } " : { ' type ' :1,' address ' : { ' town ' : ' Bristol ',' county ' : ' avon ',' country':'england' },' tags':['sport ',' water polo'] },' type ' 33: ' basic ' } ' SELECT info _ type,info_address,tags from openjs与(info_type tinyint 'lax $ .type ',info_address nvarchar(max) 'lax $ .地址为json,标签为nvarchar(max) 'lax $ .标记为json)六,将关系表数据以JSON格式存储
通过对于JSON自动/路径,将关系表数据存储为JSON格式,
汽车模式:根据挑选语句中圆柱的顺序,自动生成JSON数据的格式;小路模式:使用列名的格式来生成JSON数据的格式,列名使用逗号分隔(点分隔)表示组-成员关系;
1,以汽车模式生成JSON格式
选择身份证、名称、类别来自dbo.dt_jsonfor json auto、root('json ')返回的数据格式是
{ 'json':[ { 'id':1,' name':'C# ',' category':'Computer' },{ 'id':2,' name':'English ',' category':'Language' },{ 'id':3,' name ' 33: ' MSDN ',' category ' : ' Web ' },{ ' id ' :4,' name '以小路模式生成JSON格式
从dbo.dt_jsonfor json路径根(“json”)中选择编号为book.id ',名称为' book.name ',类别为“产品.类别”返回的数据格式是:
{ ' JSON ' :[{ ' book ' : { ' id ' :1,' name':'C#'},' product ' : { ' category ' : ' Computer ' },{'book':{'id':2,' name':'English'},' product ' : { ' category ' 3: ' Language ' },}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:详细解释js1:使用TSQL查询数据和更新JSON数据是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。