Как я могу извлечь только обычный текст из значений столбцов в SQL?

#mysql #sql #substring #calculated-columns #alphanumeric

Вопрос:

У меня есть столбец (существующий Col), содержащий буквенно-цифровые значения, из которых я должен извлекать только обычный текст, как показано в примере ниже:

Существующий Col Требуется Col
G14 — Шоколадные деньги 543 Шоколадные деньги
Количество парковочных мест Q89 Количество парковочных мест
19 — Плата за фишки — 20 Плата за чипсы
698 Стоимость билета Стоимость билета

Я попробовал функцию ПОДСТРОКИ, но не смог изменить ее, чтобы она принимала только обычный текст и игнорировала все остальное.

SUBSTRING ( Existing Col,5 ,10 )

Комментарии:

1. Вероятно, regexp_replace что-то

Ответ №1:

Предполагая, что у вас всегда есть по крайней мере два слова, вы можете использовать:

 select regexp_substr(val, '([A-Za-z] [A-Za-z ] [A-Za-z] )( |$)')
from (select 'G14 - Chocolate money 543' as val union all
      select 'Parking amount Q89' union all
      select '19 - Chips fee - 20' union all
      select '698 Ticket fee'
     ) x
 

Вот скрипка db<>.

Комментарии:

1. Спасибо за ответ, он отлично работает, как показано в db<>fiddle, но как я могу передать имя столбца вместо передачи отдельных значений?

2. @PreethamCS . . . Вы просто передаете имя столбца, как в примере (где столбец называется val ).

3. Извините, мне было неясно, когда я сказал название столбца, я ищу способ просто передать столбец «Существующий Col» в запрос вместо отдельных операторов select для значений, так как в столбце более 100 записей.

4. @PreethamCS. . . regexp_substr(existing_col, '([A-Za-z] [A-Za-z ] [A-Za-z] )( |$)') .