타입 캐스트 문자열을 정수로-Postgres
Varchar에 원시 피드가있는 테이블에서 데이터를 가져오고 있는데 varchar의 열을 문자열 열로 가져와야합니다. 나는 <column_name>::integer
뿐만 아니라 사용하려고 시도했지만 to_number(<column_name>,'9999999')
몇 개의 빈 필드가 있으므로 새 테이블에서 빈 필드 또는 null로 필드를 검색해야합니다.
같은 기능이 있는지 알려주세요.
거친 추측 : 값이 빈 문자열이면 NULLIF를 사용하여 NULL로 바꿀 수 있습니다.
SELECT
NULLIF(your_value, '')::int
더 나아가서 다음과 같은 합쳐진 분야를 제한 할 수도 있습니다.
SELECT CAST(coalesce(<column>, '0') AS integer) as new_field
from <table>
where CAST(coalesce(<column>, '0') AS integer) >= 10;
빈 열을 NULL
s 로 처리 해야하는 경우 다음을 시도하십시오.
SELECT CAST(nullif(<column>, '') AS integer);
반면 NULL
에 피해야 할 값이 있으면 다음을 시도하십시오.
SELECT CAST(coalesce(<column>, '0') AS integer);
동의합니다. 오류 메시지가 많은 도움이 될 것입니다.
NULL 또는 특수 문자 또는 빈 문자열로 인해 오류가 발생하지 않는 유일한 방법은 다음과 같습니다.
SELECT REGEXP_REPLACE(COALESCE(<column>, '0'), '[^0-9]*' ,'0')::integer FROM table
Lukas의 게시물에 대해 언급 할 수 없습니다 (너무 평판이 적습니까? 저는 꽤 새롭습니다).
내 PG 설정에서 to_number(NULL)
작동하지 않으므로 내 해결책은 다음과 같습니다.
SELECT CASE WHEN column = NULL THEN NULL ELSE column :: Integer END
FROM table
값에 숫자가 아닌 문자가 포함 된 경우 다음과 같이 값을 정수로 변환 할 수 있습니다.
SELECT CASE WHEN <column>~E'^\\d+$' THEN CAST (<column> AS INTEGER) ELSE 0 END FROM table;
CASE 연산자는 <column>을 검사하고, 정수 패턴과 일치하면 비율을 정수로 변환하고, 그렇지 않으면 0을 리턴합니다.
참고 URL : https://stackoverflow.com/questions/10518258/typecast-string-to-integer-postgres
'Programming' 카테고리의 다른 글
인터페이스 빌더 : UIView의 레이아웃 iOS 6/7 델타는 무엇입니까? (0) | 2020.07.28 |
---|---|
열거 형을 WinForms 콤보 상자에 바인딩 한 다음 설정 (0) | 2020.07.28 |
많은 'if else'문을보다 깔끔한 방법으로 변환 (0) | 2020.07.28 |
컴파일러가 누락 된 세미콜론을보고하지 않는 이유는 무엇입니까? (0) | 2020.07.28 |
파이썬 : 외부 루프에서 다음 반복으로 계속 (0) | 2020.07.28 |