티스토리 뷰

728x90

PostgreSQL :: 연산자 사용법

PostgreSQL에서는 데이터 타입 변환을 위해 :: 연산자를 자주 사용한다. 이 연산자는 SQL 표준의 CAST 구문과 같은 역할을 하지만, 더 간결하고 직관적으로 쓸 수 있다. :: 연산자는 특정 데이터 타입으로 변환하고 싶을 때 사용되며, 데이터베이스 쿼리에서 강력하고 유용하게 쓰인다.


기본 사용법: ::

PostgreSQL에서 ::는 "이 데이터를 특정 데이터 타입으로 변환해라"라는 의미다. 예를 들어, 문자열 데이터를 정수로 변환하려면 아래와 같이 작성할 수 있다.

SELECT '123'::INTEGER;
-- 결과: 123 (정수형 데이터)

::는 아래와 같은 데이터 타입으로 변환하는 데 사용할 수 있다.


자주 사용하는 데이터 타입 예제

1. 숫자 타입

숫자와 관련된 데이터 타입 변환은 많이 쓰인다.

  • ::INT 또는 ::INTEGER: 정수형으로 변환.
  • ::BIGINT: 더 큰 범위의 정수형으로 변환.
  • ::SMALLINT: 작은 범위의 정수형으로 변환.
  • ::NUMERIC 또는 ::DECIMAL: 소수점 있는 숫자로 변환.
  • ::FLOAT 또는 ::REAL: 부동 소수점 숫자로 변환.
SELECT '42'::INT;      -- 결과: 42
SELECT '3.14'::FLOAT;  -- 결과: 3.14

2. 문자열 타입

문자열 변환도 빈번하게 사용된다.

  • ::TEXT: 문자열로 변환.
  • ::CHAR 또는 ::CHARACTER: 고정 길이 문자열로 변환.
  • ::VARCHAR: 가변 길이 문자열로 변환.
SELECT 123::TEXT;          -- 결과: '123'
SELECT 'hello'::VARCHAR;   -- 결과: 'hello'

3. 날짜와 시간 타입

날짜와 시간 데이터를 다룰 때도 유용하다.

  • ::DATE: 날짜 타입으로 변환.
  • ::TIMESTAMP: 날짜와 시간 정보를 포함한 타입으로 변환.
  • ::TIME: 시간만 포함한 타입으로 변환.
  • ::INTERVAL: 시간 간격으로 변환.
SELECT '2025-01-01'::DATE;          -- 결과: 2025-01-01
SELECT '2025-01-01 15:30'::TIMESTAMP; -- 결과: 2025-01-01 15:30:00

4. Boolean 타입

참(TRUE) 또는 거짓(FALSE)으로 변환할 때 사용된다.

  • ::BOOLEAN: 문자열이나 숫자를 Boolean 타입으로 변환. (0은 FALSE, 그 외 숫자는 TRUE로 간주)
SELECT 'true'::BOOLEAN;   -- 결과: TRUE
SELECT 0::BOOLEAN;        -- 결과: FALSE
SELECT 1::BOOLEAN;        -- 결과: TRUE

5. JSON과 JSONB 타입

PostgreSQL은 JSON 데이터를 다루는 데 강력하다.

  • ::JSON: 일반 JSON 타입으로 변환.
  • ::JSONB: 바이너리 JSON 타입으로 변환. (효율적인 검색과 저장 가능)
SELECT '{"key": "value"}'::JSON;    -- 결과: JSON 데이터
SELECT '{"key": "value"}'::JSONB;  -- 결과: JSONB 데이터

6. 기타 데이터 타입

PostgreSQL에는 다양한 데이터 타입이 있고, :: 연산자를 사용해서 변환할 수 있다.

  • ::UUID: UUID 형식으로 변환.
  • ::BYTEA: 바이너리 데이터로 변환.
  • ::CIDR, ::INET: 네트워크 주소 형식으로 변환.
  • ::ARRAY: 배열로 변환.
SELECT '123e4567-e89b-12d3-a456-426614174000'::UUID; -- 결과: UUID 데이터
SELECT '192.168.0.1'::INET;                        -- 결과: IP 주소 데이터

CAST와의 차이점

::는 간결하지만, SQL 표준을 준수하려면 CAST를 사용할 수도 있다. 두 가지는 동일한 기능을 한다.

SELECT CAST('123' AS INTEGER); -- SQL 표준
SELECT '123'::INTEGER;         -- PostgreSQL 스타일

주의사항

  1. 변환 가능한 경우에만 사용
    잘못된 데이터 타입으로 변환하려고 하면 오류가 발생한다.

    SELECT 'abc'::INTEGER; -- 오류 발생: invalid input syntax for type integer
  2. 명시적 변환과 암시적 변환
    PostgreSQL은 일부 상황에서 자동으로 타입을 변환하지만, 명시적으로 변환하는 것이 안전하다.

이처럼 PostgreSQL의 :: 연산자는 간단하면서도 강력한 데이터 변환 도구다. 상황에 맞게 적절히 활용하면 쿼리를 더욱 유연하게 작성할 수 있다.

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함