#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'
);