@Iossarian

Как составить SQL-запрос?

Есть условное приложение, которое позволяет записывать в БД сообщения с секретными кодами внутри. Секретный код записывается внутри фигурных скобок. Надо реализовать такой функционал, чтобы в БД записывалось само сообщение и из него в отдельный столбец выделялись секретные коды (т.е. текст из фигурных скобок). Каким образом можно реализовать данный функционал без использования сложных техник (задание не подразумевает их использование) ?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 2
vman
@vman
Для MySQL версии 5.6, 5.7 можно сделать вот так

CREATE DATABASE test;
use test;

CREATE TABLE t (a varchar(255), b varchar(255));

-- повесим триггер на INSERT 
-- триггер будет брать значение из "...." и вставлять его в поле 'b'

CREATE TRIGGER before_insert_test_t
BEFORE INSERT ON test.t 
FOR EACH ROW 
  SET new.b = SUBSTRING_INDEX(SUBSTRING_INDEX(new.a, '"', 2), '"', -1);

INSERT INTO t (a) VALUES('text text "QWERTY" text text');
SELECT * FROM t;

+------------------------------+--------+
| a                            | b      |
+------------------------------+--------+
| text text "QWERTY" text text | QWERTY |
+------------------------------+--------+


в 8 версии MySQL, можно сделать так

CREATE TABLE t 
(
  a varchar(255), 
  b varchar(255) default (SUBSTRING_INDEX(SUBSTRING_INDEX(a, '"', 2), '"', -1);)
);


но я это не проверял, 8-й версии у меня нет.
Ответ написан
Комментировать
@Iossarian Автор вопроса
Я правильно понял, что в примере вы указали конкретный номер вхождения разделителя, а если этот код может находится в рандомном месте текста, да еще и в нескольких местах?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы