타입 변환

타입 변환 (Type Conversion)

SQL을 작성하다 보면 같은 표현식 안에 서로 다른 데이터 타입이 섞이는 경우가 생겨요. 의도적일 수도, 실수로 일어날 수도 있죠. PostgreSQL은 이런 혼합 타입 표현식을 평가하기 위한 풍부한 기능을 갖고 있어요. 보통은 타입 변환이 어떻게 일어나는지 몰라도 괜찮지만, 암묵적 변환이 쿼리 결과에 영향을 줄 수 있기 때문에 한 번쯤 정리해 둘 필요가 있어요.

출처: PostgreSQL 공식 문서 — Type Conversion

본문

왜 타입 변환 메커니즘을 알아야 할까

같은 표현식 안에서 서로 다른 타입을 섞다 보면 PostgreSQL이 스스로 타입을 맞춰주는 경우가 많은데, 이 암묵적 변환이 쿼리 결과를 바꿀 수 있어요. 예를 들어 정수와 부동소수점을 비교하거나, 문자열과 숫자를 더하는 식의 상황이 그렇죠. 필요하면 명시적 타입 변환으로 결과를 원하는 대로 조정할 수 있어요.

대부분의 사용자는 타입 변환 메커니즘의 세부 내용을 알 필요가 없어요. 다만 PostgreSQL이 수행하는 암묵적 변환이 쿼리 결과에 영향을 줄 수 있다는 점은 알고 있어야 해요. 필요할 때는 명시적 변환을 써서 결과를 원하는 방향으로 조정할 수 있고요.

관련 장의 구성

이 장은 PostgreSQL의 타입 변환 메커니즘과 관례를 소개해요. 구체적인 내용은 다음과 같은 절로 나뉘어요.

  • 개요(Overview)
  • 연산자(Operators)
  • 함수(Functions)
  • 값 저장(Value Storage)
  • UNION, CASE 및 관련 구조
  • SELECT 출력 컬럼

특정 데이터 타입과 허용되는 함수·연산자에 대한 더 자세한 내용은 데이터 타입 장과 함수·연산자 장의 해당 절을 참고해야 해요. 여기서는 타입 변환이 일어나는 전체적인 흐름과 규칙을 이해하는 데 초점을 맞추는 게 좋아요.

변환이 일어나는 위치

타입 변환은 서로 다른 곳에서 각기 다른 규칙으로 일어나요. 연산자에서는 피연산자 타입에 맞춰 연산자를 선택하고, 함수에서는 인자 타입에 맞는 함수를 골라요. 값 저장에서는 테이블 컬럼에 맞게 값의 타입을 바꾸고, UNION이나 CASE 같은 구조에서는 여러 분기의 타입을 하나로 통일해요. 각 위치마다 적용되는 규칙이 조금씩 다르기 때문에, 쿼리 결과가 예상과 다르게 나온다면 어느 지점에서 변환이 일어났는지를 살펴보는 게 도움이 돼요.

더 알아보기