Функции преобразования#

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

При необходимости значения можно явно привести к определенному типу.

Функции преобразования#

cast(value AS type) type#

Явно приводит значение к типу. Это можно использовать для приведения varchar к числовому типу и наоборот.

try_cast(value AS type) type#

Как cast(), но возвращает null, если приведение не удалось.

Форматирование#

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'

Размер данных#

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

Единица

Описание

Значение

B

Байты

1

kB

Килобайты

1024

MB

Мегабайты

10242

GB

Гигабайты

10243

TB

Терабайты

10244

PB

Петабайты

10245

EB

Эксабайты

10246

ZB

Зеттабайты

10247

YB

Йоттабайты

10248

parse_data_size(string)#

Разбирает string формата value unit в число, где 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

Прочее#

typeof(expr) varchar#

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

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