SQL, где столбец содержит массив Json

#sql #sql-server

Вопрос:

Я пытаюсь запросить столбец, содержащий массив объектов json.

Массив объектов выглядит следующим образом:

 [
{
    "TYPE": "car",
    "NAME": "lucy"
},
{
    "TYPE": "bus",
    "NAME": "bob"
},
{
    "TYPE": "car",
    "NAME": "mary"
}
]
 

Я пытаюсь выбрать, содержит ли столбец объекты с типом = «автомобиль» и именем = «люси».

Комментарии:

1. Отметьте свой вопрос в базе данных, которую вы используете.

2. Ты хоть что-нибудь пробовал? Нравится Гуглить? Я получил этот результат при первом поиске: docs.microsoft.com/en-us/sql/relational-databases/json/.

3. Какой у вас пока есть вопрос? Каково определение таблицы?

Ответ №1:

Вы можете использовать OPENJSON , чтобы разбить массив на отдельные строки:

 SELECT j.*
FROM YourTable t
CROSS APPLY OPENJSON(t.) WITH (
    [TYPE] varchar(50),
    [NAME] varchar(50)
) j
WHERE j.[TYPE] = 'car' AND j.[NAME] = 'lucy'
 

Или, если вы хотите просто отфильтровать основную таблицу на основе этого, поместите ее в WHERE

 SELECT t.*
FROM YourTable t
WHERE EXISTS (SELECT 1
    FROM OPENJSON(t.) WITH (
        [TYPE] varchar(50),
        [NAME] varchar(50)
    ) j
    WHERE j.[TYPE] = 'car' AND j.[NAME] = 'lucy'
);