SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.10.2018 18:01:38

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Как обрезать строку по разделителю, но не учитывая текущую строку

Подскажите, пожалуйста.
Разделы категорий разделены разделителем #

Бывает так
кат1#кат2#кат3

А бывает и так
кат1#кат2
кат1#кат2#кат3

Чтобы любой из вариантов попадал в запрос используется следующий поиск

select distinct cat from table where (cat regexp '^кат1#[^#]+$' or cat regexp '^кат1#[^#]+#[^#]+$')


Мне нужно, чтобы в обоих вариантах находилось только кат1#кат2

При этом я могу сделать запрос и таким образом, при поиске подкатегорий
select distinct cat from table where (cat regexp '^кат1#кат2#[^#]+$' or cat regexp '^кат1#кат2#[^#]+#[^#]+$')


Те. по сути мне нужно обрезать результат запроса по разделителю #, но исключить поисковую фразу из него.

Подскажите, как это можно реализовать


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#2 04.10.2018 18:13:42

platedz
Активист
Зарегистрирован: 27.03.2012
Сообщений: 285

Re: Как обрезать строку по разделителю, но не учитывая текущую строку

Те. в таком запросе

select distinct cat from table where (cat regexp '^кат1#[^#]+$' or cat regexp '^кат1#[^#]+#[^#]+$')

во всех случаях мне нужно вернуть кат1#кат2
При этом я не могу указать конкретное количество разделителей, так как разделителей в запросе может не быть вовсе, может быть 1 или 2. И в зависимости от количества разделителей я уже возвращаю категорию, подкатегорию или подкатегорию


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#3 05.10.2018 15:40:26

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6691

Re: Как обрезать строку по разделителю, но не учитывая текущую строку

Кажется, Вам стоит подумать о том, чтобы нормализовать базу данных, тогда не будет этих мучений.

Но прямой ответ на вопрос — SELECT LEFT(cat, 8) FROM ... — просто отрежьте нужную часть.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson