Я не совсем уверен, что понимаю вопрос, но regexp_replace()
, кажется, добивается цели:
with sample (employeeid) as (
values
('1ACR'),
('2ACRDCR'),
('100DCRAC')
)
select employeeid,
regexp_replace(employeeid, 'ACR|AC|DCR|DC.*$', '', 'gi') as clean_id
from sample
возвращается:
employeeid | clean_id
-----------+---------
1ACR | 1
2ACRDCR | 2
100DCRAC | 100
Регулярное выражение говорит: «любой символ после любой из этих строк до конца строки» - и затем его заменяют ничем. Это, однако, не сработает, если фактический empid содержит любой из тех кодов, которые добавляются.
Было бы намного чище хранить эту информацию в двух столбцах. Один для empid и один для этих "кодов"