Есть ли способ в Mysql извлечь строку из второго вхождения динамической c длины - PullRequest
0 голосов
/ 13 июля 2020

В MySql DB у меня есть столбец строки типа

xx-11|Hello Shrishti|@KFC near you|Bhopal|...

с различными полями, объединенными оператором вертикальной черты '|'. Иногда нет дополнительных полей, таких как "xx-22|Hello Chandu".

Я хочу извлечь строку после второго появления '|' если присутствуют дополнительные поля, и пустая строка, если дополнительных полей нет.

Может ли кто-нибудь помочь мне с любым логом c. Я пробовал INSTR, SUBSTR, и т. Д. c. но я не смог придумать правильного решения.

Заранее спасибо.

1 Ответ

1 голос
/ 13 июля 2020

Используйте два вызова LOCATE to get the position of the 2nd | , and SUBSTR () `, чтобы получить все после этого.

SUBSTR(columnName, LOCATE('|', columName, LOCATE('|', columName)+1)+1)

Если вы используете MySQL 8.x, вы можете использовать REGEXP_REPLACE()

REGEXP_REPLACE(columnName, '^[^|]*\\|[^|]*\\|', '')

Регулярное выражение соответствует от начала ^ до второго |.

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