Как я могу вернуть только определенную часть столбца?

0

Поэтому у меня есть столбец, который возвращает строку, которая выглядит так:

part1 > part2 > part3

Я хочу, чтобы иметь возможность возвращать только часть 2, когда я выбираю эту строку, но я не могу понять, как это сделать. Самое близкое, что я получил, - это выражение:

SELECT
SUBSTRING(column_name, INSTR(column_name, ">") +2)

FROM
table;

Что возвращает part2 > part3.

Я изучил использование RegEx, но на самом деле я не уверен в этом, и я, похоже, не могу оборачивать голову тем, как я буду строить это утверждение... Если бы кто-нибудь мог дать мне несколько указателей, это было бы очень полезно :)

Теги:

2 ответа

3
Лучший ответ

Используйте функцию Trim() вместе с Substring_Index():

SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(column_name, " > ", 2), " > ", -1)) 
FROM table

Подробности:

Возвращает подстроку из строки str перед подсчетом вхождения разделителя delim. Если счетчик положителен, возвращается все слева от конечного разделителя (считая слева). Если счетчик отрицательный, возвращается все, что находится справа от конечного разделителя (считая справа). SUBSTRING_INDEX() выполняет зависящее от регистра совпадение при поиске разделителя.

  • SUBSTRING_INDEX (column_name, ">", 2) возвращает " part1> part2 "
  • Далее SUBSTRING_INDEX (строка, ">", -1) возвращает " part2 "
  • Обратите внимание на использование начального и конечного пробелов в строке разделителя " > "
  • TRIM очищает все начальные и конечные пробелы (если они есть слева).
  • 1
    Спасибо за отличный ответ!
0
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(column_name, ">" ,2), ">", -1)

mysql имеет очень полезную функцию SUBSTRING_INDEX, которая получает строку только до определенной подстроки или символа. он также позволяет вам вернуться назад с конца строки, используя отрицательное число. также, обратите внимание, что если вы хотите TRIM пробелы вокруг ">" (как подсказывает кто-то другой), вы можете использовать ">" вместо ">",

  • 0
    Этот ответ может помочь автору темы, но он очень низкого качества. Этот ответ не содержит каких-либо объяснений.
  • 0
    Я не думал, что это было необходимо, так как вопрос уже был на правильном пути, но я добавил некоторые сейчас

Ещё вопросы

Сообщество Overcoder
Наверх
Меню