Извлечение идентификационного номера из varchar в PostgreSQL - PullRequest
0 голосов
/ 19 января 2012

У меня есть поле, содержащее смешанные данные с номером идентификатора, который я хочу извлечь в другой столбец.Столбец, из которого я хочу извлечь, содержит несколько записей, которые соответствуют формату «фамилия, имя-ID».Я только хочу убрать часть 'ID' и из тех столбцов, у которых есть '-' и цифры после него.

Итак, я пытался сделать ...

update data.xml_customerqueryrs
set new_id = regexp_replace(name, '[a-z]A-Z]', '')
where name like '%-%';

Я знаю, что есть что-то незначительное, что мне нужно исправить, но я не уверен, поскольку документация postgresql для сопоставления с образцом не очень хорошо справляется с поиском только чисел.

Ответы [ 2 ]

3 голосов
/ 19 января 2012

Если вы на самом деле only want to strip the 'ID' part:

new_id = regexp_replace(name, '-.*?$', '')

Или, если вы, на самом деле, хотите извлечь идентификационную часть:

new_id = substring(name, '-(.*?)$')

Iиспользуйте квантификатор *? , чтобы извлечь только последнюю часть, где имя содержит -.Как:

Skeet-Gravell,John-1234

Строковые функции in current manual

1 голос
/ 19 января 2012

Или вы также можете сделать:

new_id = substr(name, strpos(name, '-'), length(name)) 

Ссылка: Строки

...