2015-11-30 13 views
0

У меня есть проблема с преобразованием столбца с текстовыми значениями в целые значения.Как преобразовать текстовые значения в целые значения

В таблице адрес у меня есть колонка «почтовый индекс» типа ТЕКСТ. Я создал новое имя столбца типа postcode_int integer. В колонке «почтовый индекс» некоторые люди писали, например, «330 ...» или «00234». Как я могу проверить, является ли это значение целым числом. И если значение является целым числом, то как преобразовать эти значения из типа TEXT в тип Integer и установить их в столбце postcode_int, чтобы позже я мог делать 'между' 11111 ' и «99999».

я пытался сделать что-то вроде этого:

UPDATE adresse 
    SET postcode_int= case 
    when pg_typeof(REGEXP_REPLACE(COALESCE(trim(LEADING '0' FROM postcode), '0'), 
           '[^0-9]*' ,'0')::integer 
       ) = integer 
    then postcode_int 
    else 0 
    end; 

Что касается

Андрей

+0

литые (Charcol как целое) – jarlh

+0

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

+0

, если я это сделать свой путь, то я получаю эту ошибку: недопустимый синтаксис ввода для целого числа:«388 ..» –

ответ

0

Я считаю, что SQL вам нужно, это:

UPDATE adresse 
SET postcode_int = CAST(postcode AS INT) 

Это основано на вашем пример.

Если этот ответ непонятен, обратитесь к пересмотру.

+0

Я получаю это: ОШИБКА: недействительный синтаксис ввода для целого числа: «388 ..» ********** Fehler ********** ОШИБКА: недопустимый синтаксис ввода для целого числа : "388 .." SQL Status: 22P02 –

+2

Тогда это дубликат этого вопроса? http://stackoverflow.com/questions/2082686/how-do-i-cast-a-string-to-integer-and-have-0-in-case-of-error-in-the-cast-with- p –

+0

не совсем. Мне нужно добавить его в новый столбец, если он является целым числом. –

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