Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

JSON в SQL Server

JSON (J аваСи криптО обектN otation) е много популярен стандарт за обмен на данни, специално в REST API. Почти всички съвременни уебсайтове, приложения за Android или iOS използват това за обмен на данни със сървъра. От SQL Server 2016 Microsoft разширява поддръжката си за JSON чрез няколко вградени функции. По този начин SQL Server поддържа NOSQL функции в традиционните релационни бази данни. Нека го разгледаме:

  • ISJSON – проверява низ дали е валиден JSON или не
  • JSON_VALUE – извлича стойност от JSON низ
  • JSON_QUERY – извлича обект или масив от JSON низ
  • JSON_MODIFY – връща актуализирания JSON низ
  • OPENJSON – анализира JSON текст и връща обекти и свойства от JSON входа като редове и колони
  • Клауза FOR JSON – експортира SQL данни във формат JSON

ISJSON функция

DECLARE @json NVARCHAR(MAX); 
SET @json = N'{
"info":[
{
"id":"1",
"name":"Robert Aragon",
"ssn":"489-36-8350",
"credit_card":[
"4929-3813-3266-4295",
"5370-4638-8881-3020"
],
"address":{
"town":"Avon",
"area":"New York",
"zipcode":"76148"
}
},
{
"id":"2",
"name":"Thomas Conley",
"ssn":"690-05-5315",
"credit_card":[
"5299-1561-5689-1938"
],
"address":{
"town":"Jackson Street",
"area":"New York",
"zipcode":"80233"
}
},
{
"id":"3",
"name":"Susan Davis",
"ssn":"421-37-1396",
"credit_card":[
"5293-8502-0071-3058"
],
"address":{
"town":"Rock Beach",
"area":"Los angeles",
"zipcode":"900341"
}
},
{
"id":"4",
"name":"Christopher Diaz",
"ssn":"458-02-6124",
"credit_card":[
"5548-0246-6336-5664"
],
"address":{
"town":"Small town",
"area":"Wasshington",
"zipcode":"63126"
}
},
{
"id":"5",
"name":"Rick Edwards",
"ssn":"612-20-6832",
"credit_card":[
"4539-5385-7425-5825"
],
"address":{
"town":"Free Town",
"area":"Utah",
"zipcode":"97222"
}
},
{
"id":"6",
"name":"Victor Faulkner",
"ssn":"300-62-3266",
"credit_card":[
"4916-9766-5240-6147",
"4532-4220-6922-9909",
"5218-0144-2703-9266"
],
"address":{
"town":"Dakota",
"area":"North Dakota",
"zipcode":"92104"
}
}
]
}
'; 
SELECT ISJSON(@json);

Изход

1 -- 1 if it is a valid JSON otherwise 0

Функция JSON_VALUE

Тази функция се използва за извличане на скаларна стойност от JSON низ. Синтаксисът му е

JSON_VALUE(expression, path)

израз е името на променлива или колона, която съдържа JSON текст и е свойството за извличане. Например, изпълнението на оператора по-долу върху горния JSON низ ще даде по-долу изход:

SELECT JSON_VALUE(@json, '$.info[3].credit_card[0]')

Изход

5548-0246-6336-5664

Функцията JSON_VALUE връща единична текстова стойност от тип nvarchar(4000) . Връща null ако посоченият път не е намерен в JSON обекта или стойността е извън nvarchar(4000). Използване на ‘строго ‘ ключова дума преди пътя ще изведе грешката, ако посоченият път не е наличен в JSON обекта.

Функция JSON_QUERY

Функцията JSON_QUERY(израз [,път]) приема името на променлива или колона, която съдържа JSON текст и JSON пътя, който посочва обекта или масива за извличане като негови аргументи.

Изход

Връща JSON фрагмент от тип nvarchar(max) . Подобно на функцията JSON_VALUE връща null, ако посочената стойност не е обект или масив. Използването на ключова дума „строга“ ще доведе до грешка.

Функция JSON_MODIFY

Той актуализира стойността на свойство в JSON низ и връща актуализирания JSON низ. Той приема израз, път и ново като аргументи. Използвайки тази функция, можем да извършим операция по-долу върху JSON низ:

  1. Актуализиране
  2. Вмъкване
  3. Изтриване
  4. Добавяне
1. Актуализация

Актуализира стойността на даден път.

SELECT JSON_MODIFY(@json,'$.info[0].name', 'Mehedi')

Изход

2. Вмъкване

Нова стойност се добавя в JSON низ, ако атрибутът в предоставения път не съществува. В противен случай той ще актуализира съществуващата стойност съгласно горния пример. Новият атрибут се добавя в края на JSON.

SELECT JSON_MODIFY(@json,'$.info[0].last_name', 'Mehedi')

Изход

3. Изтриване

Поставянето на стойност NULL в пътя просто ще я премахне.

SELECT JSON_MODIFY(@json,'$.info[0].name', NULL)

Изход

4. Добавяне

Нов елемент може да бъде добавен в масив, както следва:

SELECT JSON_MODIFY(@json,'append $.info[0].credit_card','4539-5385-7425-5825')

Изход

Функция OPENJSON

Това е функция с таблична стойност, която анализира JSON текст и връща обекти и свойства от JSON входа като редове и колони.

DECLARE @json NVARCHAR(MAX);
SET @json =
N'{"id":"1", "name": "Robert Aragon", "ssn": "489-36-8350",
"credit_card":["4929-3813-3266-4295","5370-4638-8881-3020"], "address":
{"town": "Avon", "area": "New York", "zipcode": "76148"}}';
SELECT * FROM OpenJson(@json)
with (
    id int  '$.id',
    name varchar(50) '$.name',
    ssn varchar(50) '$.ssn',
    [credit_card] nvarchar(MAX)  AS JSON,
    [address] nvarchar(MAX)  AS JSON
)

Изход

Клауза ЗА JSON

Тази клауза се използва широко с TSQL за експортиране на данни от SQL таблица във формат JSON. Има два варианта:

  • АВТОМАТИЧНО – JSON изходът по подразбиране се генерира с помощта на опция AUTO.
  • PATH – Структурата на JSON може да бъде променена от името на колоната или псевдоними с помощта на опция PATH
IF OBJECT_ID('Test1', 'U') IS NOT NULL
    DROP TABLE Test1;
GO

-- Create the table 
CREATE TABLE Test1( 
    pk_id    int not null identity(1,1), 
    name    varchar(10) default ('Mehedi') 
) 
 GO 
 -- Populate with 3 sample data 
 INSERT INTO Test1 default values
GO 2
IF OBJECT_ID('Test2', 'U') IS NOT NULL
    DROP TABLE Test2;
GO
-- Create the table
CREATE TABLE Test2(
    pk_id    int not null identity(1,1),
    area    varchar(10) default ('Dhanmondi'),
    city    varchar(10) default ('Dhaka')
)
GO
-- Populate with 3 sample data
INSERT INTO Test2 default values
GO 1
-- Example of AUTO
SELECT A.pk_id, A.name, (SELECT pk_id, area, city
    FROM Test2 B
    WHERE A.pk_id = B.pk_id
    FOR JSON AUTO
    ) as test2
FROM Test1 A
FOR JSON AUTO
-- Example of PATH
SELECT A.pk_id, A.name, (SELECT pk_id as id, area, city
    FROM Test2 B
    WHERE A.pk_id = B.pk_id
    FOR JSON AUTO
    ) as test2
FROM Test1 A
FOR JSON PATH , ROOT ('EmployeeInfo')
GO

Изход

Заключение

Това е всичко за JSON в SQL Server. Честит TSQLing!

Тази статия е взета от моя блог.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на SQL Server sp_msforeachtable за избор само на онези таблици, които отговарят на някакво условие

  2. Как да търсите низ в бази данни на SQL Server

  3. Автоматизиране на обработката на табличен модел на бази данни на услугите за анализ (SSAS) в SQL Server

  4. Конфигуриране на групи за наличност на AlwaysOn - част 2

  5. Конфигурирайте SQL задания в SQL Server с помощта на T-SQL