Преобразование типов#

Неявное преобразование типов#

Trino автоматически преобразует числовые и строковые значения в целевой тип, если такое преобразование возможно. Trino не выполняет автоматическое преобразование между числовыми и строковыми типами. Например, запрос, ожидающий VARCHAR, не будет автоматически конвертировать значение BIGINT в эквивалентный VARCHAR.

Явное преобразование типов#

cast(value AS type) type#

Приводит значение к заданному типу.

try_cast(value AS type) type#

Приводит значение к заданному типу. Возвращает значение NULL, если приведение не удалось.

Вспомогательные функции#

format(format, args...) varchar#

Возвращает отформатированную строку, используя шаблон форматирования format и аргументы:

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'
parse_data_size(string)#

Преобразует строку string формата value unit в число:

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

Функция поддерживает следующие единицы измерения:

Единица

Описание

Значение

B

Bytes

1

kB

Kilobytes

1024

MB

Megabytes

10242

GB

Gigabytes

10243

TB

Terabytes

10244

PB

Petabytes

10245

EB

Exabytes

10246

ZB

Zettabytes

10247

YB

Yottabytes

10248

typeof(expr) varchar#

Возвращает имя типа возвращаемого выражением значения:

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