Превратите строку, разделенную точкой с запятой, в массив JSON в MySQL

#mysql #arrays #string #function

Вопрос:

Мне нужно создать функцию, которая будет преобразовывать эти данные: «test1@test.com;test2@test.com» в JSON, как строка: «[«test1@test.com», «test2@test.com»]».

В функции MySQL… Есть какие-нибудь идеи?

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

1. Просто хочу отметить — на самом деле это не то, для чего предназначен MySQL.

2. ОБЪЕДИНИТЬ() и ЗАМЕНИТЬ() — больше ничего.

Ответ №1:

 SET @value := '"test1@test.com;test2@test.com"';
SELECT @value, CONCAT('"[', REPLACE(@value, ';', '", "'), ']"');
 
@значение CONCAT(‘»[‘, ЗАМЕНИТЬ(@значение, ‘;’, ‘», «‘), ‘]»‘)
«test1@test.com;test2@test.com» «[«test1@test.com», «test2@test.com»]»

бд<>скрипка <>здесь

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

1. Спасибо за быстрый ответ, Акина! Дальнейший вопрос 🙂 — если я использую этот код: SET @value := client.email SELECT @value, CONCAT('"[', REPLACE(@value, ';', '", "'), ']"'); изменит ли он все клиентские адреса электронной почты?

2. @kg Select ничего не может изменить. Требуется обновление. UPDATE client SET email = CONCAT('"[', REPLACE(email, ';', '", "'), ']"');

3. Большое спасибо!