본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

76강 SQL 초석 다지기 : PostgreSQL CAST operator

by DoitSQL 2023. 1. 19.
728x90

PostgreSQL 기초강의, PostgreSQL 기초강좌, cast

76강 SQL 초석 다지기 : PostgreSQL CAST operator   

 

SQL 초석 다지기 76강 시작합니다.

 

이번 시간에는

 PostgreSQL CAST operator

에 대해서 알아보는 시간입니다.

 

이번 시간에는 PostgreSQL CAST 연산자를 사용하여 한 유형의 값을 다른 유형으로 변환하는 방법을 보여드리겠습니다.


Introduction to PostgreSQL CAST operator   

한 데이터 유형의 값을 다른 데이터 유형으로 변환하려는 경우가 많습니다. PostgreSQL은 이 작업을 수행할 수 있는 CAST 연산자를 제공합니다.

다음은 CAST 유형의 구문을 보여줍니다:

CAST ( expression AS target_type ); 

 

이 구문에서:

  • 먼저 상수, 테이블 열, 값으로 평가되는 식을 지정합니다.
  • 그런 다음 식의 결과를 변환할 대상 데이터 유형을 지정하십시오.

PostgreSQL type cast :: operator   

CAST 유형 구문 외에도 다음 구문을 사용하여 한 유형의 값을 다른 유형으로 변환할 수 있습니다:

expression::type 

 

다음 예를 참조하십시오:

SELECT
  '100'::INTEGER,
  '01-OCT-2015'::DATE; 

결과

캐스트 연산자(::)를 사용하는 캐스트 구문은 PostgreSQL 고유이며 SQL 표준과 맞지 않습니다.


PostgreSQL CAST examples   

CAST 연산자를 사용하여 한 유형의 값을 다른 유형으로 변환하는 몇 가지 예를 들어 보겠습니다.

 

1) Cast a string to an integer example   

다음 문은 문자열 상수를 정수로 변환합니다:

SELECT
     CAST ('100' AS INTEGER); 

결과

 

식을 대상 유형으로 변환할 수 없는 경우 PostgreSQL에서 오류가 발생합니다. 다음 예를 참조하십시오:

SELECT
     CAST ('10C' AS INTEGER);  

오류


2) Cast a string to a date example   

이 예에서는 CAST를 사용하여 문자열을 날짜로 변환합니다.

SELECT
   CAST ('2015-01-01' AS DATE),
   CAST ('01-OCT-2015' AS DATE); 

결과

먼저 2015-01-01 리터럴 문자열을 2015년 1월 1일로 변환했습니다. 

둘째, 01-OCT-2015를 2015년 10월 1일로 변경하였습니다.


3) Cast a string to a double example   

다음 예제에서는 문자열 '10.2'를 double 값으로 변환하려고 합니다:

SELECT
     CAST ('10.2' AS DOUBLE); 

오류

이 문제를 해결하려면 다음과 같이 DOUBLE 대신 DOUBLE PRECISION을 사용해야 합니다:

SELECT
   CAST ('10.2' AS DOUBLE PRECISION); 

정상


4) Cast a string to a boolean example   

이 예에서는 CAST()를 사용하여 문자열 'true', 'T'를 true로, 'false', 'F'를 false로 변환합니다:

SELECT 
   CAST('true' AS BOOLEAN),
   CAST('false' as BOOLEAN),
   CAST('T' as BOOLEAN),
   CAST('F' as BOOLEAN); 

결과


5) Convert a string to a timestamp example   

SELECT '2019-06-15 14:30:20'::timestamp; 

결과


6) Convert a string to an interval example   

다음 예제에서는 캐스트 연산자를 사용하여 문자열을 구간으로 변환합니다:

SELECT '15 minute'::interval,
     '2 hour'::interval,
     '1 day'::interval,
     '2 week'::interval,
     '3 month'::interval;   

결과


7) Using CAST with table data example   

먼저 id  및 rating의 두 개의 열로 구성된 ratings  테이블을 작성합니다. rating  열의 데이터 유형은 VARCHAR(1)입니다:

CREATE TABLE ratings (
     ID serial PRIMARY KEY,
     rating VARCHAR (1) NOT NULL
); 

 

둘째, 일부 표본 데이터를 ratings에 삽입합니다.

INSERT INTO ratings (rating)
VALUES
('A'),
('B'),
('C'); 

 

요구 사항이 변경되어 동일한 ratings 테이블을 사용하여 A, B, C 대신 1, 2, 3과 같은 등급을 저장합니다:

INSERT INTO ratings (rating)
VALUES
(1),
(2),
(3); 

 

따라서 ratings 테이블에는 숫자와 문자열을 포함한 혼합 값이 저장됩니다.

SELECT
     *
FROM
    ratings;  

결과

이제 등급 열의 모든 값을 정수로 변환해야 합니다. 다른 모든 A, B, C 등급은 0으로 표시됩니다. 이렇게 하려면 다음 쿼리에 표시된 CAST 유형과 함께 CASE 식을 사용합니다:

SELECT
     id,
     CASE
          WHEN rating~E'^\\d+$' THEN
               CAST (rating AS INTEGER)
          ELSE
               0
          END as rating
FROM
     ratings; 

~E'^\\d+$'   :   숫자로 구성된 문자열 탐지

CASE는 등급을 확인하고, 정수 패턴과 일치하면 등급을 정수로 변환하며, 그렇지 않으면 0을 반환합니다.

결과


이번 시간에는 PostgreSQL CAST를 사용하여 한 유형의 값을 다른 유형으로 변환하는 방법에 대해 배웠습니다.

 

감사합니다.


본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글