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
연산자는 다양한 상황에서 데이터 타입 변환을 유연하게 처리할 수 있도록 돕는 강력한 도구입니다.
'DB > PostgreSQL' 카테고리의 다른 글
[ PostgreSQL ] UNIQUE - 중복값 제한하기 (0) | 2024.11.14 |
---|---|
[ PostgreSQL ] NOT NULL - 빈값을 허용하지 않는 column 만들기 (0) | 2024.11.13 |
[ PostgreSQL ] PostgreSQL의 데이터 타입 알아보기 (0) | 2024.10.25 |
[ PostgreSQL ] gp_dump - 백업 받기 (0) | 2024.10.18 |
[ PostgreSQL ] ALTER USER - 사용자 비밀번호 변경하기 (0) | 2024.10.17 |