Регулярное выражение заменяет строковый шаблон - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь проверить лучший и оптимальный способ исключить шаблон строки из столбца, не затрагивая фактические данные.

Имея в Redshift DW, у меня есть столбец компании company, в котором есть определенные записи, заканчивающиеся на INC разными способами, поэтому я хочу исключить строковые шаблоны INC и захватить только название компании. Пожалуйста, смотрите ниже примерные данные и ожидаемый результат.

WITH T AS (
    select 'Cincin,Inc' id
    union all
    select 'Tinc, INc.' id 
    union all
    select 'Cloud' id 
    union all
    select 'Dinct Inc.' id 
)

select id , regexp_replace(id,{exp}) from T


/**OutPut***/
Cincin
Tinc
Cloud
Dinct

Ответы [ 3 ]

1 голос
/ 02 июля 2019

Redshift не поддерживает регистронезависимость с регулярным выражением, но, учитывая, что ваша целевая строка мала, вы можете обойти ее без особых проблем, используя [Ii][Nn][Cc]:

regexp_replace(id, ',? *[Ii][Nn][Cc]\.?$', '')

См. liveдемо .


Тест:

WITH T AS (
    select 'Cincin,Inc' id
    union all
    select 'Tinc, INc.' id 
    union all
    select 'Cloud' id 
    union all
    select 'Dinct Inc.' id 
)    
select id , regexp_replace(id, ',? *[Ii][Nn][Cc]\.?$', '') from T

Выход:

Cincin
Tinc
Cloud
Dinct
0 голосов
/ 02 июля 2019

Вы можете использовать это, если вы не знакомы с делом

WITH T AS (
select 'Cincin,Inc' id
union all
select 'Tinc, INc.' id 
union all
select 'Cloud' id 
union all
select 'Dinct Inc.' id 

)

select id , regexp_replace(lower(iD),'[^a-z]+(inc)([^a-z])*','') 
from T

выход:

  id        regexp_replace
Cincin,Inc  cincin
Tinc, INc.  tinc
Cloud       cloud
Dinct Inc.  dinct
0 голосов
/ 02 июля 2019

Попробуйте заменить шаблон ,?\s*Inc\.?$:

select id, regexp_replace(id, ',?\\s*[Ii][Nn][Cc]\\.?$', '') from T
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...