Как получить все до последнего появления символа в MySQL? - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу получить все до последнего появления конкретного символа из столбца.

SUBSTRING_INDEX с отрицательным значением хорошо подходит для разделения, но возвращает часть строки, которую я хочу удалить.Например, рассмотрим столбец как

first. second. third. fourth

SUBSTRING_INDEX(Col1, '.', -1), возвращает fourth, но я хочу получить

first. second. third.

На самом деле, я хочу обновить этот столбец, удаливчто-нибудь после последнего вхождения ..Другими словами, я хочу удалить SUBSTRING_INDEX(Col1, '.', -1) часть, но я не могу просто использовать REPLACE как

UPDATE table1 SET Col1=REPLACE(Col1,SUBSTRING_INDEX(Col1, '.', -1),'')

, потому что это может произойти в других частях строки.

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

ВЫ можете использовать left() и locate() funtion

DEMO

UPDATE table1 SET Col1= left(col1,
locate(SUBSTRING_INDEX(col1, '.', -1),col1))

ВЫХОД:

val
first. second. third. 
0 голосов
/ 22 февраля 2019

Я бы не стал использовать reverse().Вместо:

UPDATE table1
    SET Col1 = LEFT(col1, LENGTH(col1) - LENGTH(SUBSTRING_INDEX(Col1, '.', -1)) - 1);
0 голосов
/ 22 февраля 2019

Вот один трюк, использующий функцию REVERSE:

UPDATE yourTable
SET col =
    REVERSE(SUBSTRING(REVERSE(col), INSTR(REVERSE(col), '.')))

Демо

Идея здесьперевернуть строку, затем использовать INSTR, чтобы найти позицию последней (теперь первой) точки.Затем подстроку из позиции в начало, а затем снова в обратном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...