2015-06-08 2 views
0

У меня есть стол для почтовых индексов, например N9Z3W. Я хочу скопировать только часть «N» в другой столбец. В принципе мне нужно отрезать все после первой цифрыPostgresql обрезная строка до первой цифры

NE9ZW становится NE

L9C3K3 становится L

Как я могу сделать это с помощью Postgres (в одном запросе обновления)

+0

Если вы имеете дело с ограниченным числом только букв, вы можете проверить этот вопрос и ответ http://stackoverflow.com/ Вопросы/30670718/mysql-select-a-column-until-number/30672046 # 30672046 – Tim3880

+0

проверить 'regex_replace()' – wildplasser

ответ

1
CREATE TABLE meuk 
     (oldval text 
     , newval text 
     ); 

insert into meuk(oldval) values 
('NE9ZW') 
, ('L9C3K3') 
     ; 

UPDATE meuk 
SET newval = regexp_replace (oldval, '([A-Z]*).*', '\1') 
     ; 
SELECT * FROM meuk; 

Результат:


oldval | newval 
--------+-------- 
NE9ZW | NE 
L9C3K3 | L 
(2 rows) 

BTW: это не строго потребляет на первую цифру, а все ведущие символы-символы. Для Шифрование до что-то используйте отрицается (с ^) шаблон, как это:

UPDATE meuk 
SET newval = regexp_replace (oldval, '([^0-9]*)[0-9].*', '\1') 
     ; 
+0

Отлично, спасибо. Я нашел regexp_replace, но я не мог понять, как использовать регулярное выражение для этого. –

Смежные вопросы