변환 함수

변환 함수 (Conversion functions)

타입 변환과 값 포맷팅을 다루는 함수들이에요. 숫자·문자 값을 올바른 타입으로 바꾸거나 문자열을 특정 형식으로 만들 때 써요.

출처: 문서

본문

Trino는 가능하다면 숫자 값과 문자 값을 올바른 타입으로 암시적으로 변환해요. 하지만 문자 타입과 숫자 타입 사이는 변환하지 않아요. 예를 들어 varchar를 기대하는 쿼리는 bigint 값을 그에 해당하는 varchar로 자동 변환하지 않아요.

필요할 때는 값을 특정 타입으로 명시적으로 캐스팅할 수 있어요.

변환 함수 (Conversion functions)

cast(value AS type) → type

값을 타입으로 명시적으로 캐스팅해요. varchar를 숫자 값 타입으로, 또는 그 반대로 캐스팅하는 데 쓸 수 있어요.

try_cast(value AS type) → type

cast()와 비슷하지만, 캐스팅에 실패하면 null을 반환해요.

포맷팅 (Formatting)

format(format, args...) → varchar

지정한 형식 문자열과 인자들을 사용해 포맷된 문자열을 반환해요.

SELECT format('%s%%', 123);
-- '123%'

SELECT format('%.5f', pi());
-- '3.14159'

SELECT format('%03d', 8);
-- '008'

SELECT format('%,.2f', 1234567.89);
-- '1,234,567.89'

SELECT format('%-7s,%7s', 'hello', 'world');
-- 'hello  ,  world'

SELECT format('%2$s %3$s %1$s', 'a', 'b', 'c');
-- 'b c a'

SELECT format('%1$tA, %1$tB %1$te, %1$tY', date '2006-07-04');
-- 'Tuesday, July 4, 2006'

format_number(number) → varchar

단위 기호를 사용해 포맷된 문자열을 반환해요.

SELECT format_number(123456); -- '123K'
SELECT format_number(1000000); -- '1M'

데이터 크기 (Data size)

parse_data_size 함수는 다음 단위를 지원해요.

단위 설명
B 바이트 (Bytes) 1
kB 킬로바이트 (Kilobytes) 1024
MB 메가바이트 (Megabytes) 1024²
GB 기가바이트 (Gigabytes) 1024³
TB 테라바이트 (Terabytes) 1024⁴
PB 페타바이트 (Petabytes) 1024⁵
EB 엑사바이트 (Exabytes) 1024⁶
ZB 제타바이트 (Zettabytes) 1024⁷
YB 요타바이트 (Yottabytes) 1024⁸

parse_data_size(string)

value unit 형식의 string을 숫자로 파싱해요. 여기서 valueunit 값들의 분수(fractional) 개수예요.

SELECT parse_data_size('1B'); -- 1
SELECT parse_data_size('1kB'); -- 1024
SELECT parse_data_size('1MB'); -- 1048576
SELECT parse_data_size('2.3MB'); -- 2411724

기타 (Miscellaneous)

typeof(expr) → varchar

주어진 표현식의 타입 이름을 반환해요.

SELECT typeof(123); -- integer
SELECT typeof('cat'); -- varchar(3)
SELECT typeof(cos(2) + 1.5); -- double

더 알아보기 (Learn more)

타입 캐스팅과 관련된 더 자세한 규칙은 Trino의 타입 문서를 참고해 보세요.