6 способов заменить значения в JSON с помощью T-SQL

В этой статье блога мы рассмотрим различные методы замены значений в JSON с использованием T-SQL (Transact-SQL). JSON (нотация объектов JavaScript) — это популярный формат обмена данными, и возможность изменять значения внутри объектов JSON является распространенным требованием при программировании баз данных. Мы обсудим шесть различных методов, предоставив разговорные объяснения и примеры кода для каждого подхода.

Метод 1: использование функций JSON_VALUE и JSON_MODIFY

Функция JSON_VALUE позволяет извлекать определенное значение из строки JSON, а JSON_MODIFY позволяет обновлять или заменять значение в объекте JSON.

Пример:

DECLARE @json NVARCHAR(MAX) = '{"name": "John", "age": 30}';
SET @json = JSON_MODIFY(@json, '$.age', 35);
SELECT JSON_VALUE(@json, '$.age') AS 'UpdatedAge';

Метод 2: использование функции REPLACE

Функция REPLACE — это универсальная функция манипулирования строками в T-SQL. Хотя он не является специфичным для JSON, его можно использовать для замены значений в строке JSON.

Пример:

DECLARE @json NVARCHAR(MAX) = '{"name": "John", "age": 30}';
SET @json = REPLACE(@json, '"age": 30', '"age": 35');
SELECT JSON_VALUE(@json, '$.age') AS 'UpdatedAge';

Метод 3: использование функций JSON_QUERY и JSON_MODIFY

Функция JSON_QUERY извлекает объект JSON или массив из строки JSON, а функция JSON_MODIFY позволяет обновлять или заменять значение внутри объекта JSON.

Пример:

DECLARE @json NVARCHAR(MAX) = '{"person": {"name": "John", "age": 30}}';
SET @json = JSON_MODIFY(@json, '$.person.age', 35);
SELECT JSON_QUERY(@json, '$.person') AS 'UpdatedPerson';

Метод 4: использование JSON_MODIFY с вложенным путем

Вы можете использовать функцию JSON_MODIFY с вложенным путем для замены значений во вложенных объектах JSON.

Пример:

DECLARE @json NVARCHAR(MAX) = '{"person": {"name": "John", "age": 30, "address": {"city": "New York", "country": "USA"}}}';
SET @json = JSON_MODIFY(@json, '$.person.address.city', 'San Francisco');
SELECT JSON_VALUE(@json, '$.person.address.city') AS 'UpdatedCity';

Метод 5: использование JSON_MODIFY с переменной JSON

Вы можете сохранить измененное значение JSON в переменной с помощью функции JSON_MODIFY, что упрощает повторное использование или дальнейшее манипулирование объектом JSON.

Пример:

DECLARE @json NVARCHAR(MAX) = '{"name": "John", "age": 30}';
DECLARE @modifiedJson NVARCHAR(MAX) = JSON_MODIFY(@json, '$.age', 35);
SELECT JSON_VALUE(@modifiedJson, '$.age') AS 'UpdatedAge';

Метод 6: использование оператора UPDATE

В дополнение к функциям JSON вы также можете использовать оператор UPDATE для замены значений в столбце JSON в таблице.

Пример:

UPDATE YourTable
SET YourJsonColumn = JSON_MODIFY(YourJsonColumn, '$.age', 35)
WHERE YourCondition;

В этой статье мы рассмотрели шесть различных методов замены значений в JSON с помощью T-SQL. В зависимости от ваших конкретных требований и сценариев вы можете выбрать наиболее подходящий подход. Операторы JSON_VALUE, JSON_MODIFY, REPLACE, JSON_QUERY и UPDATE предоставляют различные способы изменения данных JSON в SQL Server. Поэкспериментируйте с этими методами и найдите тот, который лучше всего соответствует вашим потребностям.