Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
08.07.2019, 17:11
|
|||
---|---|---|---|
|
|||
Взять подстроку по одному разделителю, но с разных позиций |
|||
#18+
Добрый день. Есть таблица примерно следующего вида id | value |presentaion 1 | aaa|bbb|ccc | 2|3 2 | aaa|bbb|ccc | 1|2|3 3 | aaa|bbb|ccc | 1 4 | aaa|bbb|ccc | 1|3 Строка value все время постоянна, а presentaion может меняться Можно ли каким-то образом (без использования конструкции case when) на основе данных в колонке presentaion удалить ненужные подстроки в колонке value? Т.е. должно политься следующее: id | value |presentaion 1 | bbb|ccc | 2|3 2 | aaa|bbb|ccc | 1|2|3 3 | aaa | 1 4 | aaa|ccc | 1|3 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.07.2019, 19:41
|
|||
---|---|---|---|
Взять подстроку по одному разделителю, но с разных позиций |
|||
#18+
Подробненько по каждой позиции рассказываем, почему она сочтена нужной или ненужной... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.07.2019, 20:04
|
|||
---|---|---|---|
|
|||
Взять подстроку по одному разделителю, но с разных позиций |
|||
#18+
Например, возьмем запись aaa|bbb|ccc | 1|3 В колонке value строка разделена символом "|", т.е. он как бы делит строку на три части. В колонке presentation есть цифры 2 и 3. Сам вид разделителя в обоих колонках роли не играет, может быть и запятая, и точка с запятой и т.д. Таким образом, я хочу на основе цифр в колонке presentation взять, условно говоря, 1 и 3 часть строки, чтобы получилось aaa|ccc. Соответственно, если в колонке value будет aaa|bbb|ccc|ddd, а в presentation будет 1|3|4, на выходе поучилось aaa|ccc|ddd Думаю, идея понятна. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.07.2019, 20:06
|
|||
---|---|---|---|
|
|||
Взять подстроку по одному разделителю, но с разных позиций |
|||
#18+
Опечатался во втором предложении второго абзаца. В колонке presentation есть цифры 1 и 3. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.07.2019, 20:12
|
|||
---|---|---|---|
Взять подстроку по одному разделителю, но с разных позиций |
|||
#18+
Ааа... вон оно что. Ну тогда осталось узнать версию MySQL. Очень надеюсь, что она 8+... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.07.2019, 20:15
|
|||
---|---|---|---|
|
|||
Взять подстроку по одному разделителю, но с разных позиций |
|||
#18+
Ver 15.1 Distrib 10.2.21-MariaDB Вроде бы, подходит ... |
|||
:
Нравится:
Не нравится:
|
|||
|
08.07.2019, 20:37
|
|||
---|---|---|---|
Взять подстроку по одному разделителю, но с разных позиций |
|||
#18+
Ну тогда делаем в CTE: CTE1, рекурсивный. Ищем максимальное количество разделителей на поле N, и генерим таблицу чисел от 1 до N+1. CTE2. Выделяем из полей i-е value и presentation, сохраняя к ним id и позицию. CTE3. Собираем всё обратно, заменяя отсутствующие позиции пустой строкой. CTE4, рекурсивный. Убираем задвоенные разделители. Основной запрос. Тримаем разделители с обоих концов. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=47&mobile=1&tid=1829056]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 139ms |
0 / 0 |