MySQL Вопрос - я хочу исключить весь текст в скобках - PullRequest
3 голосов
/ 17 февраля 2020

Просто проверяю, есть ли у кого-нибудь из вас решение для этого - из приведенного ниже текста я хочу исключить весь текст в скобках.

Ввод -

PAY - дополнение, ФАЙЛЫ (aaaaaaaaaaaaaa / bbbbbbbbbbbs т.е. ssss, ffff - т.е. cccccc), DED (ppppppp, llllll, fffff gggg), LOSS (dd ddd, hhhhhh - т.е.) «F» переключается на «G»)

Выход -

ПЛАТА - дополнение, ФАЙЛЫ, ДЕД, ПОТЕРЯ, F ДО G

Ответы [ 2 ]

3 голосов
/ 17 февраля 2020

Если вы используете MySQL 8.0, вы можете сделать это с помощью regexp_replace():

regexp_replace(mytext, '\\([^)]*\\)', '')

Это работает, пока в выражении нет вложенных скобок (что соответствует вашему примеру данные).

Демонстрация на DB Fiddle :

 select regexp_replace(
    'PAY - addition,FILES (aaaaaaaaaaaaaa/bbbbbbbbbbbs i.e. ssss,ffff – i.e. cccccc),DED (ppppppp, llllll, fffff gggg),LOSS (ddddd, hhhhhh – i.e.),F TO G ( “F” is switching to “G”)',
    '\\([^)]*\\)',
    ''
) val
| val                                      |
| :--------------------------------------- |
| PAY - addition,FILES ,DED ,LOSS ,F TO G  |
0 голосов
/ 17 февраля 2020

Еще один для MYSQL8.0:

SET @input:="PAY - addition,FILES (aaaaaaaaaaaaaa/bbbbbbbbbbbs i.e. ssss,ffff – i.e. cccccc),DED (ppppppp, llllll, fffff gggg),LOSS (ddddd, hhhhhh – i.e.),F TO G ( “F” is switching to “G”)";

with recursive cte as (
    select 
        0 i, 
        @input as text
    union all
    select 
        i+1, 
        CASE WHEN instr(text,'(') >0 AND instr(text,')')>instr(text,'(') THEN REPLACE(text, substring(text,instr(text,'('),instr(text,')')-instr(text,'(')+1), '') ELSE '' END
    from cte 
    where  i<10
) select text from cte where text<>'' order by i desc limit 1;

вывод:

+------------------------------------------+
| text                                     |
+------------------------------------------+
| PAY - addition,FILES ,DED ,LOSS ,F TO G  |
+------------------------------------------+
1 row in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...