본문 바로가기

DB/PostgreSQL

[ PostgreSQL ] CAST - query시 형변환 하기

반응형

PostgreSQL에서 CAST 연산자는 데이터를 다른 데이터 타입으로 변환할 때 사용됩니다. 이는 특정 연산에서 데이터 타입이 호환되지 않거나 특정 형식으로 데이터를 다뤄야 할 때 유용합니다. PostgreSQL은 다양한 형식의 데이터를 다른 형식으로 변환할 수 있는 CAST 연산자를 제공합니다.

1. CAST 연산자의 기본 구문

CAST 연산자는 다음과 같은 두 가지 형태로 사용할 수 있습니다:

  • CAST (value AS target_type)
  • value::target_type (PostgreSQL의 고유 문법)

두 가지 모두 동일하게 작동하지만, :: 문법은 간결하게 표현할 수 있어 자주 사용됩니다.

2. 기본 사용 예제

숫자형 -> 문자열 변환

SELECT CAST(123 AS TEXT);
-- 또는
SELECT 123::TEXT;

출력 결과: '123' (문자열로 변환됨)

문자열 -> 숫자형 변환

SELECT CAST('123' AS INTEGER);
-- 또는
SELECT '123'::INTEGER;

출력 결과: 123 (정수로 변환됨)

날짜형 -> 문자열 변환

SELECT CAST('2023-11-12' AS TEXT);
-- 또는
SELECT '2023-11-12'::TEXT;

출력 결과: '2023-11-12' (문자열로 변환됨)

3. 다양한 데이터 타입 변환 예제

문자열 -> 날짜/시간 형식 변환

문자열을 날짜나 타임스탬프로 변환할 수 있습니다. 이때 변환할 문자열의 형식이 올바른 형식이어야 합니다.

SELECT CAST('2023-11-12' AS DATE);
-- 또는
SELECT '2023-11-12'::DATE;

출력 결과: 2023-11-12 (날짜 형식으로 변환됨)

부동 소수점 -> 정수 변환

소수 부분이 있는 부동 소수점을 정수로 변환할 때는 소수점을 잘라내어 변환합니다.

SELECT CAST(45.67 AS INTEGER);
-- 또는
SELECT 45.67::INTEGER;

출력 결과: 45 (정수형으로 변환되며 소수점 이하 버림)

논리형 -> 문자형 변환

논리형 값(TRUE/FALSE)을 문자형으로 변환하여 표현할 수 있습니다.

SELECT CAST(TRUE AS TEXT);
-- 또는
SELECT TRUE::TEXT;

출력 결과: 'true' (문자열 형식으로 변환됨)

4. CAST 연산자 활용 예제

테이블에서 데이터 변환하여 조회하기

다음과 같은 employees 테이블이 있다고 가정해봅시다:

id name age salary
1 Alice 30 50000.5
2 Bob 25 40000
3 Charlie 35 60000.75

 

이 테이블에서 salary 컬럼을 정수형으로 변환하여 조회할 수 있습니다.

SELECT id, name, age, CAST(salary AS INTEGER) AS salary_int
FROM employees;

이 쿼리는 salary 값을 정수형으로 변환하여 salary_int라는 새로운 컬럼으로 보여줍니다.

출력 결과:

id name age salary_int
1 Alice 30 50000
2 Bob 25 40000
3 Charlie 35 60000

 

5. 주의사항

  • 문자열을 숫자나 날짜로 변환할 때는 해당 문자열이 유효한 형식이어야 합니다. 예를 들어 'abc'::INTEGER와 같은 변환은 오류를 발생시킵니다.
  • 소수점을 정수로 변환할 때는 반올림이 아닌, 단순히 소수점을 버리므로 정확한 변환을 위해서는 주의가 필요합니다.

CAST 연산자는 다양한 상황에서 데이터 타입 변환을 유연하게 처리할 수 있도록 돕는 강력한 도구입니다.

반응형