Нужны начальные N символов столбца в Postgres, где N неизвестно - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть один столбец в моей таблице в Postgres, скажем, employeeId. Мы делаем некоторые изменения в зависимости от типа сотрудника и сохраняем его в БД. По сути, мы добавляем строки из этих 4 строк ('ACR','AC','DCR','DC'). Теперь мы можем добавить любую комбинацию из этих 4 строк после employeeId. Например, EMPIDACRDC, EMPIDDCDCRAC и т. Д. Это допустимые комбинации. Мне нужно извлечь EMPID из этого. Длина ЭМПИД не фиксирована. Столбец имеет тип переменной длины. Как это можно сделать в Postgres?

Спасибо заранее. :)

1 Ответ

0 голосов
/ 05 сентября 2018

Я не совсем уверен, что понимаю вопрос, но 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 и один для этих "кодов"

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