一、isjson实现json验证
-- 结果:1-json格式正确;0-json格式错误 declare @json1 nvarchar ( max ) = ‘ {"id":1,"name":"ki","age":22,"son":{"name":"son","age":1},"list":[{"city":"上海","area":"松江"},{"city":"上海","area":"松江"}]} ‘ print isjson( @json1 )
结果:1
二、JSON_VALUE取出json值
declare @json2 nvarchar ( max ) = ‘ {"id":1,"name":"ki","age":22,"son":{"name":"son","age":1},"list":[{"city":"上海","area":"松江"},{"city":"上海","area":"松江"}]} ‘ select JSON_VALUE( @json2 , ‘ $.name ‘ )
结果:ki
三、JSON_QUERY取出json中的对象和数组
declare @json3 nvarchar ( max ) = ‘ {"id":1,"name":"ki","age":22,"son":{"name":"son","age":1},"list":[{"city":"上海","area":"松江"},{"city":"上海","area":"松江"}]} ‘ select JSON_QUERY( @json3 , ‘ $.son ‘ ) select JSON_QUERY( @json3 , ‘ $.list ‘ )
结果:
结果1:{"name":"son","age": 1 } 结果2: [ {"city":"上海","area":"松江"},{"city":"上海","area":"松江"} ]
四、json字符串转化成表格式
-- 如果没有数组,可以将OUTER APPLY OPENJSON() WITH()省略 declare @json4 nvarchar ( max ) = ‘ {"id":1,"name":"ki","age":22,"son":{"name":"son","age":1},"list":[{"city":"上海","area":"松江"},{"city":"上海","area":"松江"}]} ‘ select * from openjson( @json4 ) with ( id nvarchar ( 500 ) ‘ strict $.id ‘ , -- strict表示json中必须包含该字段 name nvarchar ( 500 ) ‘ strict $.name ‘ , age nvarchar ( 500 ) ‘ strict $.age ‘ , son_name nvarchar ( 500 ) ‘ strict $.son.name ‘ , son_age nvarchar ( 500 ) ‘ strict $.son.age ‘ , list nvarchar ( max ) ‘ $.list ‘ AS JSON -- 必须是nvarchar(max) 类型 ) OUTER APPLY OPENJSON(list) WITH ( city varchar ( 80 ) ‘ $.city ‘ , area varchar ( 80 ) ‘ $.area ‘ );
结果:
五、将表格式转化成json格式
-- for json auto 安装原列名自动转化 -- for json path 指定输出json的key名称,并可以控制输出字段 -- for json auto,WITHOUT_ARRAY_WRAPPER 跟在for json auto/path后可以删除中括号 select * from student for json auto select * from student for json auto,WITHOUT_ARRAY_WRAPPER select id as uniqueId, name, name as ‘ info.name ‘ from student for json path
结果:
结果: 1 [ {"id":1,"name":"ki","age":34,"create_time":"2020-09-01T11:12:43.230"},{"id":2,"name":"李四","age":33,"create_time":"2020-09-01T11:12:43.230"},{"id":3,"name":"ki","age":34,"create_time":"2020-09-01T11:12:50.987"},{"id":4,"name":"李四a","age":33,"create_time":"2020-09-01T11:12:50.987"} ] 结果2:{"id": 1 ,"name":"ki","age": 34 ,"create_time":" 2020 - 09 - 01T11: 12 : 43.230 "},{"id": 2 ,"name":"李四","age": 33 ,"create_time":" 2020 - 09 - 01T11: 12 : 43.230 "},{"id": 3 ,"name":"ki","age": 34 ,"create_time":" 2020 - 09 - 01T11: 12 : 50.987 "},{"id": 4 ,"name":"李四a","age": 33 ,"create_time":" 2020 - 09 - 01T11: 12 : 50.987 "} 结果3: [ {"uniqueId":1,"name":"ki","info":{"name":"ki"}},{"uniqueId":2,"name":"李四","info":{"name":"李四"}},{"uniqueId":3,"name":"ki","info":{"name":"ki"}},{"uniqueId":4,"name":"李四a","info":{"name":"李四a"}} ]
student表数据:
/* Navicat Premium Data Transfer Source Server : localSqlServer Source Server Type : SQL Server Source Server Version : 14001000 Source Host : 127.0.0.1:1433 Source Catalog : custom Source Schema : dbo Target Server Type : SQL Server Target Server Version : 14001000 File Encoding : 65001 Date: 19/01/2021 17:03:20 */ -- ---------------------------- -- Table structure for student -- ---------------------------- IF EXISTS ( SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID (N ‘ [dbo].[student] ‘ ) AND type IN ( ‘ U ‘ )) DROP TABLE [ dbo ] . [ student ] GO CREATE TABLE [ dbo ] . [ student ] ( [ id ] int IDENTITY ( 1 , 1 ) NOT NULL , [ name ] varchar ( 5 ) COLLATE Chinese_PRC_CI_AS NULL , [ age ] int NULL , [ create_time ] datetime NULL ) GO ALTER TABLE [ dbo ] . [ student ] SET (LOCK_ESCALATION = TABLE ) GO -- ---------------------------- -- Records of student -- ---------------------------- SET IDENTITY_INSERT [ dbo ] . [ student ] ON GO INSERT INTO [ dbo ] . [ student ] ( [ id ] , [ name ] , [ age ] , [ create_time ] ) VALUES (N ‘ 1 ‘ , N ‘ ki ‘ , N ‘ 34 ‘ , N ‘ 2020-09-01 11:12:43.230 ‘ ) GO INSERT INTO [ dbo ] . [ student ] ( [ id ] , [ name ] , [ age ] , [ create_time ] ) VALUES (N ‘ 2 ‘ , N ‘ 李四 ‘ , N ‘ 33 ‘ , N ‘ 2020-09-01 11:12:43.230 ‘ ) GO INSERT INTO [ dbo ] . [ student ] ( [ id ] , [ name ] , [ age ] , [ create_time ] ) VALUES (N ‘ 3 ‘ , N ‘ ki ‘ , N ‘ 34 ‘ , N ‘ 2020-09-01 11:12:50.987 ‘ ) GO INSERT INTO [ dbo ] . [ student ] ( [ id ] , [ name ] , [ age ] , [ create_time ] ) VALUES (N ‘ 4 ‘ , N ‘ 李四a ‘ , N ‘ 33 ‘ , N ‘ 2020-09-01 11:12:50.987 ‘ ) GO SET IDENTITY_INSERT [ dbo ] . [ student ] OFF GO -- ---------------------------- -- Auto increment value for student -- ---------------------------- DBCC CHECKIDENT ( ‘ [dbo].[student] ‘ , RESEED, 6 ) GO -- ---------------------------- -- Primary Key structure for table student -- ---------------------------- ALTER TABLE [ dbo ] . [ student ] ADD CONSTRAINT [ PK__student__3213E83F18AD2C2B ] PRIMARY KEY CLUSTERED ( [ id ] ) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ] GO
sqlserver2016版添加的json操作
标签:rap student alt drop primary 没有 pen app tran
查看更多关于sqlserver2016版添加的json操作的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did117839