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을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
78강 SQL 초석 다지기 : PostgreSQL Recursive Query (74) | 2023.01.21 |
---|---|
77강 SQL 초석 다지기 : PostgreSQL Common Table Expressions (124) | 2023.01.20 |
75강 SQL 초석 다지기 : PostgreSQL NULLIF function (79) | 2023.01.18 |
74강 SQL 초석 다지기 : PostgreSQL COALESCE function (74) | 2023.01.17 |
73강 SQL 초석 다지기 : PostgreSQL CASE expression (76) | 2023.01.16 |
댓글