Как получить данные из JSON Array MSSQL - PullRequest
0 голосов
/ 08 января 2019

Если я сделаю это, я смогу получить первое значение в массиве. Но как я могу получить все значения в списке?

SELECT 
    JSON_VALUE('{"Distributor": [5030, 4000, 1231]}', '$.Distributor[0]') AS result;

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете взглянуть на эту статью: https://docs.microsoft.com/fr-fr/sql/relational-databases/json/json-data-sql-server?view=sql-server-2017

Использование функций Openjson и Outer apply

Пример предоставлен:

DECLARE @json NVARCHAR(MAX)
SET @json =  
N'[  
       { "id" : 2,"info": { "name": "John", "surname": "Smith" }, "age": 25 },  
       { "id" : 5,"info": { "name": "Jane", "surname": "Smith", "skills": ["SQL", "C#", "Azure"] }, "dob": "2005-11-04T12:00:00" }  
 ]'  

SELECT *  
FROM OPENJSON(@json)  
  WITH (id int 'strict $.id',  
        firstName nvarchar(50) '$.info.name', lastName nvarchar(50) '$.info.surname',  
        age int, dateOfBirth datetime2 '$.dob',
    skills nvarchar(max) '$.info.skills' as json) 
    outer apply openjson( skills ) 
                     with ( skill nvarchar(8) '$' )

РЕДАКТИРОВАТЬ код с предоставленным JSON:

DECLARE @json NVARCHAR(MAX)
SET @json = N'{"Distributor": [5030, 4000, 1231]}'

SELECT Distributor
FROM OPENJSON(@json)  
    WITH (Distributors nvarchar(max) '$.Distributor' as json) 
    outer apply openjson( Distributors ) 
                     with ( Distributor int '$' )

РЕЗУЛЬТАТ:

Distributor
5030
4000
1231
0 голосов
/ 08 января 2019
SELECT value
FROM OPENJSON('{"Distributor": [5030, 4000, 1231]}','$.Distributor')

'$.Distributor' - это «начальный путь» для начала поиска массива

...