Перейти к основному содержимому
Перейти к основному содержимому

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

Общие проблемы с преобразованием данных

ClickHouse, как правило, использует такое же поведение, как и C++ программы.

Функции to<type> и cast ведут себя по-разному в некоторых случаях, например, в случае LowCardinality: cast удаляет признак LowCardinality, а функции to<type> — нет. То же самое с Nullable, это поведение несовместимо со стандартом SQL и может быть изменено с помощью настройки cast_keep_nullable.

примечание

Обратите внимание на потенциальную потерю данных, если значения типа данных преобразуются в тип данных меньшего размера (например, из Int64 в Int32) или между несовместимыми типами данных (например, из String в Int). Убедитесь, что результат соответствует ожиданиям.

Пример:

SELECT
    toTypeName(toLowCardinality('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type

┌─source_type────────────┬─to_type_result_type────┬─cast_result_type─┐
│ LowCardinality(String) │ LowCardinality(String) │ String           │
└────────────────────────┴────────────────────────┴──────────────────┘

SELECT
    toTypeName(toNullable('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type

┌─source_type──────┬─to_type_result_type─┬─cast_result_type─┐
│ Nullable(String) │ Nullable(String)    │ String           │
└──────────────────┴─────────────────────┴──────────────────┘

SELECT
    toTypeName(toNullable('') AS val) AS source_type,
    toTypeName(toString(val)) AS to_type_result_type,
    toTypeName(CAST(val, 'String')) AS cast_result_type
SETTINGS cast_keep_nullable = 1

┌─source_type──────┬─to_type_result_type─┬─cast_result_type─┐
│ Nullable(String) │ Nullable(String)    │ Nullable(String) │
└──────────────────┴─────────────────────┴──────────────────┘

Заметки о функциях toString

Семейство функций toString позволяет преобразовывать между числами, строками (но не фиксированными строками), датами и датами с временем. Все эти функции принимают один аргумент.

  • При преобразовании в строку или из строки значение форматируется или разбирается по тем же правилам, что и для формата TabSeparated (и почти всех других текстовых форматов). Если строку нельзя разобрать, возникает исключение, и запрос отменяется.
  • При преобразовании дат в числа или наоборот дата соответствует количеству дней, прошедших с начала эпохи Unix.
  • При преобразовании дат с временем в числа или наоборот дата с временем соответствует количеству секунд, прошедших с начала эпохи Unix.
  • Функция toString для аргумента DateTime может принимать второй аргумент типа String, содержащий имя часового пояса, например: Europe/Amsterdam. В этом случае время форматируется в соответствии с указанным часовым поясом.

Заметки о функциях toDate/toDateTime

Форматы даты и даты с временем для функций toDate/toDateTime определяются следующим образом:

YYYY-MM-DD
YYYY-MM-DD hh:mm:ss

В качестве исключения, если преобразование из числовых типов UInt32, Int32, UInt64 или Int64 в Date и если число больше или равно 65536, число интерпретируется как временная метка Unix (а не как количество дней) и округляется до даты. Это позволяет поддерживать частое использование записи toDate(unix_timestamp), что иначе вызвало бы ошибку и потребовало бы записи более громоздкой конструкции toDate(toDateTime(unix_timestamp)).

Преобразование между датой и датой с временем выполняется естественным образом: добавляется пустое время или отбрасывается время.

Преобразование между числовыми типами использует те же правила, что и присвоения между различными числовыми типами в C++.

Пример

Запрос:

SELECT
    now() AS ts,
    time_zone,
    toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10

Результат:

┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam  │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra    │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan  │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens     │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast    │ 2023-09-08 20:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belgrade   │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Berlin     │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bratislava │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Brussels   │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Bucharest  │ 2023-09-08 22:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘

Также см. функцию toUnixTimestamp.

toBool

Преобразует входное значение в значение типа Bool. Генерирует исключение в случае ошибки.

Синтаксис

toBool(expr)

Аргументы

  • expr — выражение, возвращающее число или строку. Expression.

Поддерживаемые аргументы:

  • Значения типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.
  • Строки true или false (независимо от регистра).

Возвращаемое значение

  • Возвращает true или false на основе оценки аргумента. Bool.

Пример

Запрос:

SELECT
    toBool(toUInt8(1)),
    toBool(toInt8(-1)),
    toBool(toFloat32(1.01)),
    toBool('true'),
    toBool('false'),
    toBool('FALSE')
FORMAT Vertical

Результат:

toBool(toUInt8(1)):      true
toBool(toInt8(-1)):      true
toBool(toFloat32(1.01)): true
toBool('true'):          true
toBool('false'):         false
toBool('FALSE'):         false

toInt8

Преобразует входное значение в значение типа Int8. Генерирует исключение в случае ошибки.

Синтаксис

toInt8(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt8('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int8, возникает переполнение или недополнение результата. Это не считается ошибкой. Например: SELECT toInt8(128) == -128;.

Возвращаемое значение

  • 8-битное целое число. Int8.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt8(-8),
    toInt8(-8.8),
    toInt8('-8')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt8(-8):   -8
toInt8(-8.8): -8
toInt8('-8'): -8

См. также

toInt8OrZero

Как toInt8, эта функция преобразует входное значение в значение типа Int8, но возвращает 0 в случае ошибки.

Синтаксис

toInt8OrZero(x)

Аргументы

  • x — строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления обычных значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt8OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int8, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 8-битное целое число, если успешно, иначе 0. Int8.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt8OrZero('-8'),
    toInt8OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt8OrZero('-8'):  -8
toInt8OrZero('abc'): 0

См. также

toInt8OrNull

Как toInt8, эта функция преобразует входное значение в значение типа Int8, но возвращает NULL в случае ошибки.

Синтаксис

toInt8OrNull(x)

Аргументы

  • x — строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt8OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int8, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 8-битное целое число, если успешно, иначе NULL. Int8 / NULL.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt8OrNull('-8'),
    toInt8OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt8OrNull('-8'):  -8
toInt8OrNull('abc'): ᴺᵁᴸᴸ

См. также

toInt8OrDefault

Как toInt8, эта функция преобразует входное значение в значение типа Int8, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toInt8OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (опционально) — значение по умолчанию, возвращаемое, если преобразование к типу Int8 не удалось. Int8.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt8OrDefault('0xc0fe', CAST('-1', 'Int8'));.
примечание

Если входное значение не может быть представлено в пределах Int8, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 8-битное целое число, если успешно, иначе возвращает значение по умолчанию, если оно передано, или 0, если нет. Int8.
примечание
  • Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен совпадать с типом приведения.

Пример

Запрос:

SELECT
    toInt8OrDefault('-8', CAST('-1', 'Int8')),
    toInt8OrDefault('abc', CAST('-1', 'Int8'))
FORMAT Vertical;

Результат:

Row 1:
──────
toInt8OrDefault('-8', CAST('-1', 'Int8')):  -8
toInt8OrDefault('abc', CAST('-1', 'Int8')): -1

См. также

toInt16

Преобразует входное значение в значение типа Int16. Генерирует исключение в случае ошибки.

Синтаксис

toInt16(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt16('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int16, возникает переполнение или недополнение результата. Это не считается ошибкой. Например: SELECT toInt16(32768) == -32768;.

Возвращаемое значение

  • 16-битное целое число. Int16.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt16(-16),
    toInt16(-16.16),
    toInt16('-16')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt16(-16):    -16
toInt16(-16.16): -16
toInt16('-16'):  -16

См. также

toInt16OrZero

Как toInt16, эта функция преобразует входное значение в значение типа Int16, но возвращает 0 в случае ошибки.

Синтаксис

toInt16OrZero(x)

Аргументы

  • x — строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt16OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int16, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 16-битное целое число, если успешно, иначе 0. Int16.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt16OrZero('-16'),
    toInt16OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt16OrZero('-16'): -16
toInt16OrZero('abc'): 0

См. также

toInt16OrNull

Как toInt16, эта функция преобразует входное значение в значение типа Int16, но возвращает NULL в случае ошибки.

Синтаксис

toInt16OrNull(x)

Аргументы

  • x — строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt16OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int16, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 16-битное целое число, если успешно, иначе NULL. Int16 / NULL.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt16OrNull('-16'),
    toInt16OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt16OrNull('-16'): -16
toInt16OrNull('abc'): ᴺᵁᴸᴸ

См. также

toInt16OrDefault

Как toInt16, эта функция преобразует входное значение в значение типа Int16, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toInt16OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (опционально) — значение по умолчанию, возвращаемое, если преобразование к типу Int16 не удалось. Int16.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt16OrDefault('0xc0fe', CAST('-1', 'Int16'));.
примечание

Если входное значение не может быть представлено в пределах Int16, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 16-битное целое число, если успешно, иначе возвращает значение по умолчанию, если оно передано, или 0, если нет. Int16.
примечание
  • Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен совпадать с типом приведения.

Пример

Запрос:

SELECT
    toInt16OrDefault('-16', CAST('-1', 'Int16')),
    toInt16OrDefault('abc', CAST('-1', 'Int16'))
FORMAT Vertical;

Результат:

Row 1:
──────
toInt16OrDefault('-16', CAST('-1', 'Int16')): -16
toInt16OrDefault('abc', CAST('-1', 'Int16')): -1

См. также

toInt32

Преобразует входное значение в значение типа Int32. Генерирует исключение в случае ошибки.

Синтаксис

toInt32(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt32('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int32, результат переполняется или недополняется. Это не считается ошибкой. Например: SELECT toInt32(2147483648) == -2147483648;

Возвращаемое значение

  • 32-битное целое число. Int32.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt32(-32),
    toInt32(-32.32),
    toInt32('-32')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt32(-32):    -32
toInt32(-32.32): -32
toInt32('-32'):  -32

См. также

toInt32OrZero

Как toInt32, эта функция преобразует входное значение в значение типа Int32, но возвращает 0 в случае ошибки.

Синтаксис

toInt32OrZero(x)

Аргументы

  • x — строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt32OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int32, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 32-битное целое число, если успешно, иначе 0. Int32
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt32OrZero('-32'),
    toInt32OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt32OrZero('-32'): -32
toInt32OrZero('abc'): 0

См. также

toInt32OrNull

Как toInt32, эта функция преобразует входное значение в значение типа Int32, но возвращает NULL в случае ошибки.

Синтаксис

toInt32OrNull(x)

Аргументы

  • x — строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt32OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int32, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 32-битное целое число, если успешно, иначе NULL. Int32 / NULL.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt32OrNull('-32'),
    toInt32OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt32OrNull('-32'): -32
toInt32OrNull('abc'): ᴺᵁᴸᴸ

См. также

toInt32OrDefault

Как toInt32, эта функция преобразует входное значение в значение типа Int32, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toInt32OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (опционально) — значение по умолчанию, возвращаемое, если преобразование к типу Int32 не удалось. Int32.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt32OrDefault('0xc0fe', CAST('-1', 'Int32'));.
примечание

Если входное значение не может быть представлено в пределах Int32, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 32-битное целое число, если успешно, иначе возвращает значение по умолчанию, если оно передано, или 0, если нет. Int32.
примечание
  • Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен совпадать с типом приведения.

Пример

Запрос:

SELECT
    toInt32OrDefault('-32', CAST('-1', 'Int32')),
    toInt32OrDefault('abc', CAST('-1', 'Int32'))
FORMAT Vertical;

Результат:

Row 1:
──────
toInt32OrDefault('-32', CAST('-1', 'Int32')): -32
toInt32OrDefault('abc', CAST('-1', 'Int32')): -1

См. также

toInt64

Преобразует входное значение в значение типа Int64. Генерирует исключение в случае ошибки.

Синтаксис

toInt64(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt64('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int64, результат переполняется или недополняется. Это не считается ошибкой. Например: SELECT toInt64(9223372036854775808) == -9223372036854775808;

Возвращаемое значение

  • 64-битное целое число. Int64.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt64(-64),
    toInt64(-64.64),
    toInt64('-64')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt64(-64):    -64
toInt64(-64.64): -64
toInt64('-64'):  -64

См. также

toInt64OrZero

Как toInt64, эта функция преобразует входное значение в значение типа Int64, но возвращает 0 в случае ошибки.

Синтаксис

toInt64OrZero(x)

Аргументы

  • x — строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt64OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int64, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 64-битное целое число, если успешно, иначе 0. Int64.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt64OrZero('-64'),
    toInt64OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt64OrZero('-64'): -64
toInt64OrZero('abc'): 0

См. также

toInt64OrNull

Как toInt64, эта функция преобразует входное значение в значение типа Int64, но возвращает NULL в случае ошибки.

Синтаксис

toInt64OrNull(x)

Аргументы

  • x — строковое представление числа. Expression / String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt64OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int64, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 64-битное целое число, если успешно, иначе NULL. Int64 / NULL.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt64OrNull('-64'),
    toInt64OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt64OrNull('-64'): -64
toInt64OrNull('abc'): ᴺᵁᴸᴸ

См. также

toInt64OrDefault

Как toInt64, эта функция преобразует входное значение в значение типа Int64, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toInt64OrDefault(expr[, default])

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (опционально) — значение по умолчанию, возвращаемое, если преобразование к типу Int64 не удалось. Int64.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt64OrDefault('0xc0fe', CAST('-1', 'Int64'));.
примечание

Если входное значение не может быть представлено в пределах Int64, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 64-битное целое число, если успешно, иначе возвращает значение по умолчанию, если оно передано, или 0, если нет. Int64.
примечание
  • Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен совпадать с типом приведения.

Пример

Запрос:

SELECT
    toInt64OrDefault('-64', CAST('-1', 'Int64')),
    toInt64OrDefault('abc', CAST('-1', 'Int64'))
FORMAT Vertical;

Результат:

Row 1:
──────
toInt64OrDefault('-64', CAST('-1', 'Int64')): -64
toInt64OrDefault('abc', CAST('-1', 'Int64')): -1

См. также

toInt128

Преобразует входное значение в значение типа Int128. Генерирует исключение в случае ошибки.

Синтаксис

toInt128(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt128('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int128, результат переполняется или недополняется. Это не считается ошибкой.

Возвращаемое значение

  • 128-битное целое число. Int128.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt128(-128),
    toInt128(-128.8),
    toInt128('-128')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt128(-128):   -128
toInt128(-128.8): -128
toInt128('-128'): -128

См. также

toInt128OrZero

Как toInt128, эта функция преобразует входное значение в значение типа Int128, но возвращает 0 в случае ошибки.

Синтаксис

toInt128OrZero(expr)

Аргументы

  • expr — выражение, возвращающее число или строковое представление числа. Expression / String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt128OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int128, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 128-битное целое число, если успешно, иначе 0. Int128.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt128OrZero('-128'),
    toInt128OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt128OrZero('-128'): -128
toInt128OrZero('abc'):  0

См. также

toInt128OrNull

Как toInt128, эта функция преобразует входное значение в значение типа Int128, но возвращает NULL в случае ошибки.

Синтаксис

toInt128OrNull(x)

Аргументы

  • x — строковое представление числа. Expression / String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например: SELECT toInt128OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int128, возникает переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 128-битное целое число, если успешно, иначе NULL. Int128 / NULL.
примечание

Функция использует округление по направлению к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt128OrNull('-128'),
    toInt128OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt128OrNull('-128'): -128
toInt128OrNull('abc'):  ᴺᵁᴸᴸ

См. также

toInt128OrDefault

Как и toInt128, эта функция преобразует входное значение в значение типа Int128, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toInt128OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (необязательный) — Значение по умолчанию, которое будет возвращено, если разбор типа Int128 не удался. Int128.

Поддерживаемые аргументы:

  • (U)Int8/16/32/64/128/256.
  • Float32/64.
  • Строковые представления (U)Int8/16/32/128/256.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toInt128OrDefault('0xc0fe', CAST('-1', 'Int128'));.
примечание

Если входное значение не может быть представлено в пределах Int128, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 128-битовое целое значение, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если не было. Int128.
примечание
  • Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен соответствовать типу приведения.

Пример

Запрос:

SELECT
    toInt128OrDefault('-128', CAST('-1', 'Int128')),
    toInt128OrDefault('abc', CAST('-1', 'Int128'))
FORMAT Vertical;

Результат:

Row 1:
──────
toInt128OrDefault('-128', CAST('-1', 'Int128')): -128
toInt128OrDefault('abc', CAST('-1', 'Int128')):  -1

Смотрите также

toInt256

Преобразует входное значение в значение типа Int256. Генерирует исключение в случае ошибки.

Синтаксис

toInt256(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toInt256('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int256, результат переполняется или недополняется. Это не считается ошибкой.

Возвращаемое значение

  • 256-битовое целое значение. Int256.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt256(-256),
    toInt256(-256.256),
    toInt256('-256')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt256(-256):     -256
toInt256(-256.256): -256
toInt256('-256'):   -256

Смотрите также

toInt256OrZero

Как и toInt256, эта функция преобразует входное значение в значение типа Int256, но возвращает 0 в случае ошибки.

Синтаксис

toInt256OrZero(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toInt256OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int256, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 256-битовое целое значение, если успешно, иначе 0. Int256.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt256OrZero('-256'),
    toInt256OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt256OrZero('-256'): -256
toInt256OrZero('abc'):  0

Смотрите также

toInt256OrNull

Как и toInt256, эта функция преобразует входное значение в значение типа Int256, но возвращает NULL в случае ошибки.

Синтаксис

toInt256OrNull(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toInt256OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах Int256, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 256-битовое целое значение, если успешно, иначе NULL. Int256 / NULL.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toInt256OrNull('-256'),
    toInt256OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toInt256OrNull('-256'): -256
toInt256OrNull('abc'):  ᴺᵁᴸᴸ

Смотрите также

toInt256OrDefault

Как и toInt256, эта функция преобразует входное значение в значение типа Int256, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toInt256OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (необязательный) — Значение по умолчанию, которое будет возвращено, если разбор типа Int256 не удался. Int256.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toInt256OrDefault('0xc0fe', CAST('-1', 'Int256'));.
примечание

Если входное значение не может быть представлено в пределах Int256, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 256-битовое целое значение, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если не было. Int256.
примечание
  • Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен соответствовать типу приведения.

Пример

Запрос:

SELECT
    toInt256OrDefault('-256', CAST('-1', 'Int256')),
    toInt256OrDefault('abc', CAST('-1', 'Int256'))
FORMAT Vertical;

Результат:

Row 1:
──────
toInt256OrDefault('-256', CAST('-1', 'Int256')): -256
toInt256OrDefault('abc', CAST('-1', 'Int256')):  -1

Смотрите также

toUInt8

Преобразует входное значение в значение типа UInt8. Генерирует исключение в случае ошибки.

Синтаксис

toUInt8(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt8('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt8, происходит переполнение или недополнение результата. Это не считается ошибкой. Например: SELECT toUInt8(256) == 0;.

Возвращаемое значение

  • 8-битовое беззнаковое целое значение. UInt8.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt8(8),
    toUInt8(8.8),
    toUInt8('8')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt8(8):   8
toUInt8(8.8): 8
toUInt8('8'): 8

Смотрите также

toUInt8OrZero

Как и toUInt8, эта функция преобразует входное значение в значение типа UInt8, но возвращает 0 в случае ошибки.

Синтаксис

toUInt8OrZero(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления обыкновенных значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt8OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt8, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 8-битовое беззнаковое целое значение, если успешно, иначе 0. UInt8.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt8OrZero('-8'),
    toUInt8OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt8OrZero('-8'):  0
toUInt8OrZero('abc'): 0

Смотрите также

toUInt8OrNull

Как и toUInt8, эта функция преобразует входное значение в значение типа UInt8, но возвращает NULL в случае ошибки.

Синтаксис

toUInt8OrNull(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt8OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt8, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 8-битовое беззнаковое целое значение, если успешно, иначе NULL. UInt8 / NULL.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt8OrNull('8'),
    toUInt8OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt8OrNull('8'):   8
toUInt8OrNull('abc'): ᴺᵁᴸᴸ

Смотрите также

toUInt8OrDefault

Как и toUInt8, эта функция преобразует входное значение в значение типа UInt8, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toUInt8OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (необязательный) — Значение по умолчанию, которое будет возвращено, если разбор типа UInt8 не удался. UInt8.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt8OrDefault('0xc0fe', CAST('0', 'UInt8'));.
примечание

Если входное значение не может быть представлено в пределах UInt8, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 8-битовое беззнаковое целое значение, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если не было. UInt8.
примечание
  • Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен соответствовать типу приведения.

Пример

Запрос:

SELECT
    toUInt8OrDefault('8', CAST('0', 'UInt8')),
    toUInt8OrDefault('abc', CAST('0', 'UInt8'))
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt8OrDefault('8', CAST('0', 'UInt8')):   8
toUInt8OrDefault('abc', CAST('0', 'UInt8')): 0

Смотрите также

toUInt16

Преобразует входное значение в значение типа UInt16. Генерирует исключение в случае ошибки.

Синтаксис

toUInt16(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt16('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt16, происходит переполнение или недополнение результата. Это не считается ошибкой. Например: SELECT toUInt16(65536) == 0;.

Возвращаемое значение

  • 16-битовое беззнаковое целое значение. UInt16.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt16(16),
    toUInt16(16.16),
    toUInt16('16')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt16(16):    16
toUInt16(16.16): 16
toUInt16('16'):  16

Смотрите также

toUInt16OrZero

Как и toUInt16, эта функция преобразует входное значение в значение типа UInt16, но возвращает 0 в случае ошибки.

Синтаксис

toUInt16OrZero(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt16OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt16, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 16-битовое беззнаковое целое значение, если успешно, иначе 0. UInt16.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt16OrZero('16'),
    toUInt16OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt16OrZero('16'):  16
toUInt16OrZero('abc'): 0

Смотрите также

toUInt16OrNull

Как и toUInt16, эта функция преобразует входное значение в значение типа UInt16, но возвращает NULL в случае ошибки.

Синтаксис

toUInt16OrNull(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt16OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt16, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 16-битовое беззнаковое целое значение, если успешно, иначе NULL. UInt16 / NULL.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt16OrNull('16'),
    toUInt16OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt16OrNull('16'):  16
toUInt16OrNull('abc'): ᴺᵁᴸᴸ

Смотрите также

toUInt16OrDefault

Как и toUInt16, эта функция преобразует входное значение в значение типа UInt16, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toUInt16OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (необязательный) — Значение по умолчанию, которое будет возвращено, если разбор типа UInt16 не удался. UInt16.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt16OrDefault('0xc0fe', CAST('0', 'UInt16'));.
примечание

Если входное значение не может быть представлено в пределах UInt16, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 16-битовое беззнаковое целое значение, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если не было. UInt16.
примечание
  • Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен соответствовать типу приведения.

Пример

Запрос:

SELECT
    toUInt16OrDefault('16', CAST('0', 'UInt16')),
    toUInt16OrDefault('abc', CAST('0', 'UInt16'))
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt16OrDefault('16', CAST('0', 'UInt16')):  16
toUInt16OrDefault('abc', CAST('0', 'UInt16')): 0

Смотрите также

toUInt32

Преобразует входное значение в значение типа UInt32. Генерирует исключение в случае ошибки.

Синтаксис

toUInt32(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt32('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt32, результат переполняется или недополняется. Это не считается ошибкой. Например: SELECT toUInt32(4294967296) == 0;

Возвращаемое значение

  • 32-битовое беззнаковое целое значение. UInt32.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt32(32),
    toUInt32(32.32),
    toUInt32('32')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt32(32):    32
toUInt32(32.32): 32
toUInt32('32'):  32

Смотрите также

toUInt32OrZero

Как и toUInt32, эта функция преобразует входное значение в значение типа UInt32, но возвращает 0 в случае ошибки.

Синтаксис

toUInt32OrZero(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt32OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt32, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 32-битовое беззнаковое целое значение, если успешно, иначе 0. UInt32
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt32OrZero('32'),
    toUInt32OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt32OrZero('32'):  32
toUInt32OrZero('abc'): 0

Смотрите также

toUInt32OrNull

Как и toUInt32, эта функция преобразует входное значение в значение типа UInt32, но возвращает NULL в случае ошибки.

Синтаксис

toUInt32OrNull(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt32OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt32, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 32-битовое беззнаковое целое значение, если успешно, иначе NULL. UInt32 / NULL.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt32OrNull('32'),
    toUInt32OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt32OrNull('32'):  32
toUInt32OrNull('abc'): ᴺᵁᴸᴸ

Смотрите также

toUInt32OrDefault

Как и toUInt32, эта функция преобразует входное значение в значение типа UInt32, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toUInt32OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression / String.
  • default (необязательный) — Значение по умолчанию, которое будет возвращено, если разбор типа UInt32 не удался. UInt32.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt32OrDefault('0xc0fe', CAST('0', 'UInt32'));.
примечание

Если входное значение не может быть представлено в пределах UInt32, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 32-битовое беззнаковое целое значение, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если не было. UInt32.
примечание
  • Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен соответствовать типу приведения.

Пример

Запрос:

SELECT
    toUInt32OrDefault('32', CAST('0', 'UInt32')),
    toUInt32OrDefault('abc', CAST('0', 'UInt32'))
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt32OrDefault('32', CAST('0', 'UInt32')):  32
toUInt32OrDefault('abc', CAST('0', 'UInt32')): 0

Смотрите также

toUInt64

Преобразует входное значение в значение типа UInt64. Генерирует исключение в случае ошибки.

Синтаксис

toUInt64(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые типы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt64('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt64, результат переполняется или недополняется. Это не считается ошибкой. Например: SELECT toUInt64(18446744073709551616) == 0;

Возвращаемое значение

  • 64-битовое беззнаковое целое значение. UInt64.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt64(64),
    toUInt64(64.64),
    toUInt64('64')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt64(64):    64
toUInt64(64.64): 64
toUInt64('64'):  64

Смотрите также

toUInt64OrZero

Как и toUInt64, эта функция преобразует входное значение в значение типа UInt64, но возвращает 0 в случае ошибки.

Синтаксис

toUInt64OrZero(x)

Аргументы

  • x — Строковое представление числа. String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt64OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt64, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 64-битовое беззнаковое целое значение, если успешно, иначе 0. UInt64.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt64OrZero('64'),
    toUInt64OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt64OrZero('64'):  64
toUInt64OrZero('abc'): 0

Смотрите также

toUInt64OrNull

Как и toUInt64, эта функция преобразует входное значение в значение типа UInt64, но возвращает NULL в случае ошибки.

Синтаксис

toUInt64OrNull(x)

Аргументы

  • x — Строковое представление числа. Expression / String.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt64OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt64, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 64-битовое беззнаковое целое значение, если успешно, иначе NULL. UInt64 / NULL.
примечание

Функция использует округление к нулю, то есть она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt64OrNull('64'),
    toUInt64OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt64OrNull('64'):  64
toUInt64OrNull('abc'): ᴺᵁᴸᴸ

Смотрите также

toUInt64OrDefault

Как и toUInt64, эта функция преобразует входное значение в значение типа UInt64, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toUInt64OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение / Строка.
  • defauult (необязательно) — Значение по умолчанию, которое будет возвращено, если разбор к типу UInt64 не удался. UInt64.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt64OrDefault('0xc0fe', CAST('0', 'UInt64'));.
примечание

Если входное значение не может быть представлено в пределах UInt64, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 64-битное беззнаковое целое значение, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если нет. UInt64.
примечание
  • Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен совпадать с типом приведения.

Пример

Запрос:

SELECT
    toUInt64OrDefault('64', CAST('0', 'UInt64')),
    toUInt64OrDefault('abc', CAST('0', 'UInt64'))
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt64OrDefault('64', CAST('0', 'UInt64')):  64
toUInt64OrDefault('abc', CAST('0', 'UInt64')): 0

Смотрите также

toUInt128

Преобразует входное значение в значение типа UInt128. Генерирует исключение в случае ошибки.

Синтаксис

toUInt128(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt128('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt128, результат переполняется или недополняется. Это не считается ошибкой.

Возвращаемое значение

  • 128-битное беззнаковое целое значение. UInt128.
примечание

Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt128(128),
    toUInt128(128.8),
    toUInt128('128')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt128(128):   128
toUInt128(128.8): 128
toUInt128('128'): 128

Смотрите также

toUInt128OrZero

Как и toUInt128, эта функция преобразует входное значение в значение типа UInt128, но возвращает 0 в случае ошибки.

Синтаксис

toUInt128OrZero(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение / Строка.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt128OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt128, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 128-битное беззнаковое целое значение, если успешно, в противном случае 0. UInt128.
примечание

Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt128OrZero('128'),
    toUInt128OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt128OrZero('128'): 128
toUInt128OrZero('abc'): 0

Смотрите также

toUInt128OrNull

Как и toUInt128, эта функция преобразует входное значение в значение типа UInt128, но возвращает NULL в случае ошибки.

Синтаксис

toUInt128OrNull(x)

Аргументы

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt128OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt128, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 128-битное беззнаковое целое значение, если успешно, иначе NULL. UInt128 / NULL.
примечание

Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt128OrNull('128'),
    toUInt128OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt128OrNull('128'): 128
toUInt128OrNull('abc'): ᴺᵁᴸᴸ

Смотрите также

toUInt128OrDefault

Как и toUInt128, эта функция преобразует входное значение в значение типа UInt128, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toUInt128OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение / Строка.
  • default (необязательно) — Значение по умолчанию, которое будет возвращено, если разбор к типу UInt128 не удался. UInt128.

Поддерживаемые аргументы:

  • (U)Int8/16/32/64/128/256.
  • Float32/64.
  • Строковые представления (U)Int8/16/32/128/256.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt128OrDefault('0xc0fe', CAST('0', 'UInt128'));.
примечание

Если входное значение не может быть представлено в пределах UInt128, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 128-битное беззнаковое целое значение, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если нет. UInt128.
примечание
  • Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен совпадать с типом приведения.

Пример

Запрос:

SELECT
    toUInt128OrDefault('128', CAST('0', 'UInt128')),
    toUInt128OrDefault('abc', CAST('0', 'UInt128'))
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt128OrDefault('128', CAST('0', 'UInt128')): 128
toUInt128OrDefault('abc', CAST('0', 'UInt128')): 0

Смотрите также

toUInt256

Преобразует входное значение в значение типа UInt256. Генерирует исключение в случае ошибки.

Синтаксис

toUInt256(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt256('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt256, результат переполняется или недополняется. Это не считается ошибкой.

Возвращаемое значение

  • 256-битное беззнаковое целое значение. Int256.
примечание

Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt256(256),
    toUInt256(256.256),
    toUInt256('256')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt256(256):     256
toUInt256(256.256): 256
toUInt256('256'):   256

Смотрите также

toUInt256OrZero

Как и toUInt256, эта функция преобразует входное значение в значение типа UInt256, но возвращает 0 в случае ошибки.

Синтаксис

toUInt256OrZero(x)

Аргументы

  • x — Строковое представление числа. Строка.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt256OrZero('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt256, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 256-битное беззнаковое целое значение, если успешно, иначе 0. UInt256.
примечание

Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt256OrZero('256'),
    toUInt256OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt256OrZero('256'): 256
toUInt256OrZero('abc'): 0

Смотрите также

toUInt256OrNull

Как и toUInt256, эта функция преобразует входное значение в значение типа UInt256, но возвращает NULL в случае ошибки.

Синтаксис

toUInt256OrNull(x)

Аргументы

  • x — Строковое представление числа. Строка.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256.

Неподдерживаемые аргументы (возвращают \N)

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt256OrNull('0xc0fe');.
примечание

Если входное значение не может быть представлено в пределах UInt256, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 256-битное беззнаковое целое значение, если успешно, иначе NULL. UInt256 / NULL.
примечание

Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.

Пример

Запрос:

SELECT
    toUInt256OrNull('256'),
    toUInt256OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt256OrNull('256'): 256
toUInt256OrNull('abc'): ᴺᵁᴸᴸ

Смотрите также

toUInt256OrDefault

Как и toUInt256, эта функция преобразует входное значение в значение типа UInt256, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toUInt256OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение / Строка.
  • default (необязательно) — Значение по умолчанию, которое будет возвращено, если разбор к типу UInt256 не удался. UInt256.

Поддерживаемые аргументы:

  • Значения или строковые представления типов (U)Int8/16/32/64/128/256.
  • Значения типов Float32/64.

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления значений Float32/64, включая NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toUInt256OrDefault('0xc0fe', CAST('0', 'UInt256'));.
примечание

Если входное значение не может быть представлено в пределах UInt256, происходит переполнение или недополнение результата. Это не считается ошибкой.

Возвращаемое значение

  • 256-битное беззнаковое целое значение, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если нет. UInt256.
примечание
  • Функция использует округление к нулю, что означает, что она обрезает дробные цифры чисел.
  • Тип значения по умолчанию должен совпадать с типом приведения.

Пример

Запрос:

SELECT
    toUInt256OrDefault('-256', CAST('0', 'UInt256')),
    toUInt256OrDefault('abc', CAST('0', 'UInt256'))
FORMAT Vertical;

Результат:

Row 1:
──────
toUInt256OrDefault('-256', CAST('0', 'UInt256')): 0
toUInt256OrDefault('abc', CAST('0', 'UInt256')):  0

Смотрите также

toFloat32

Преобразует входное значение в значение типа Float32. Генерирует исключение в случае ошибки.

Синтаксис

toFloat32(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение.

Поддерживаемые аргументы:

  • Значения типов (U)Int8/16/32/64/128/256.
  • Строковые представления (U)Int8/16/32/128/256.
  • Значения типов Float32/64, включая NaN и Inf.
  • Строковые представления Float32/64, включая NaN и Inf (регистр не имеет значения).

Неподдерживаемые аргументы:

  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toFloat32('0xc0fe');.

Возвращаемое значение

  • 32-битное значение с плавающей точкой. Float32.

Пример

Запрос:

SELECT
    toFloat32(42.7),
    toFloat32('42.7'),
    toFloat32('NaN')
FORMAT Vertical;

Результат:

Row 1:
──────
toFloat32(42.7):   42.7
toFloat32('42.7'): 42.7
toFloat32('NaN'):  nan

Смотрите также

toFloat32OrZero

Как и toFloat32, эта функция преобразует входное значение в значение типа Float32, но возвращает 0 в случае ошибки.

Синтаксис

toFloat32OrZero(x)

Аргументы

  • x — Строковое представление числа. Строка.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256, Float32/64.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toFloat32OrZero('0xc0fe');.

Возвращаемое значение

  • 32-битное значение с плавающей точкой, если успешно, иначе 0. Float32.

Пример

Запрос:

SELECT
    toFloat32OrZero('42.7'),
    toFloat32OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toFloat32OrZero('42.7'): 42.7
toFloat32OrZero('abc'):  0

Смотрите также

toFloat32OrNull

Как и toFloat32, эта функция преобразует входное значение в значение типа Float32, но возвращает NULL в случае ошибки.

Синтаксис

toFloat32OrNull(x)

Аргументы

  • x — Строковое представление числа. Строка.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256, Float32/64.

Неподдерживаемые аргументы (возвращают \N):

  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toFloat32OrNull('0xc0fe');.

Возвращаемое значение

  • 32-битное значение с плавающей точкой, если успешно, иначе \N. Float32.

Пример

Запрос:

SELECT
    toFloat32OrNull('42.7'),
    toFloat32OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toFloat32OrNull('42.7'): 42.7
toFloat32OrNull('abc'):  ᴺᵁᴸᴸ

Смотрите также

toFloat32OrDefault

Как и toFloat32, эта функция преобразует входное значение в значение типа Float32, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toFloat32OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение / Строка.
  • default (необязательно) — Значение по умолчанию, которое будет возвращено, если разбор к типу Float32 не удался. Float32.

Поддерживаемые аргументы:

  • Значения типов (U)Int8/16/32/64/128/256.
  • Строковые представления (U)Int8/16/32/128/256.
  • Значения типов Float32/64, включая NaN и Inf.
  • Строковые представления Float32/64, включая NaN и Inf (регистронезависимо).

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toFloat32OrDefault('0xc0fe', CAST('0', 'Float32'));.

Возвращаемое значение

  • 32-битное значение с плавающей точкой, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если нет. Float32.

Пример

Запрос:

SELECT
    toFloat32OrDefault('8', CAST('0', 'Float32')),
    toFloat32OrDefault('abc', CAST('0', 'Float32'))
FORMAT Vertical;

Результат:

Row 1:
──────
toFloat32OrDefault('8', CAST('0', 'Float32')):   8
toFloat32OrDefault('abc', CAST('0', 'Float32')): 0

Смотрите также

toFloat64

Преобразует входное значение в значение типа Float64. Генерирует исключение в случае ошибки.

Синтаксис

toFloat64(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение.

Поддерживаемые аргументы:

  • Значения типов (U)Int8/16/32/64/128/256.
  • Строковые представления (U)Int8/16/32/128/256.
  • Значения типов Float32/64, включая NaN и Inf.
  • Строковые представления значений Float32/64, включая NaN и Inf (регистронезависимо).

Неподдерживаемые аргументы:

  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toFloat64('0xc0fe');.

Возвращаемое значение

  • 64-битное значение с плавающей точкой. Float64.

Пример

Запрос:

SELECT
    toFloat64(42.7),
    toFloat64('42.7'),
    toFloat64('NaN')
FORMAT Vertical;

Результат:

Row 1:
──────
toFloat64(42.7):   42.7
toFloat64('42.7'): 42.7
toFloat64('NaN'):  nan

Смотрите также

toFloat64OrZero

Как и toFloat64, эта функция преобразует входное значение в значение типа Float64, но возвращает 0 в случае ошибки.

Синтаксис

toFloat64OrZero(x)

Аргументы

  • x — Строковое представление числа. Строка.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256, Float32/64.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toFloat64OrZero('0xc0fe');.

Возвращаемое значение

  • 64-битное значение с плавающей точкой, если успешно, иначе 0. Float64.

Пример

Запрос:

SELECT
    toFloat64OrZero('42.7'),
    toFloat64OrZero('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toFloat64OrZero('42.7'): 42.7
toFloat64OrZero('abc'):  0

Смотрите также

toFloat64OrNull

Как и toFloat64, эта функция преобразует входное значение в значение типа Float64, но возвращает NULL в случае ошибки.

Синтаксис

toFloat64OrNull(x)

Аргументы

  • x — Строковое представление числа. Строка.

Поддерживаемые аргументы:

  • Строковые представления (U)Int8/16/32/128/256, Float32/64.

Неподдерживаемые аргументы (возвращают \N):

  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toFloat64OrNull('0xc0fe');.

Возвращаемое значение

  • 64-битное значение с плавающей точкой, если успешно, иначе \N. Float64.

Пример

Запрос:

SELECT
    toFloat64OrNull('42.7'),
    toFloat64OrNull('abc')
FORMAT Vertical;

Результат:

Row 1:
──────
toFloat64OrNull('42.7'): 42.7
toFloat64OrNull('abc'):  ᴺᵁᴸᴸ

Смотрите также

toFloat64OrDefault

Как и toFloat64, эта функция преобразует входное значение в значение типа Float64, но возвращает значение по умолчанию в случае ошибки. Если значение default не передано, то в случае ошибки возвращается 0.

Синтаксис

toFloat64OrDefault(expr[, default])

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение / Строка.
  • default (необязательно) — Значение по умолчанию, которое будет возвращено, если разбор к типу Float64 не удался. Float64.

Поддерживаемые аргументы:

  • Значения типов (U)Int8/16/32/64/128/256.
  • Строковые представления (U)Int8/16/32/128/256.
  • Значения типов Float32/64, включая NaN и Inf.
  • Строковые представления Float32/64, включая NaN и Inf (регистронезависимо).

Аргументы, для которых возвращается значение по умолчанию:

  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toFloat64OrDefault('0xc0fe', CAST('0', 'Float64'));.

Возвращаемое значение

  • 64-битное значение с плавающей точкой, если успешно, иначе возвращает значение по умолчанию, если оно было передано, или 0, если нет. Float64.

Пример

Запрос:

SELECT
    toFloat64OrDefault('8', CAST('0', 'Float64')),
    toFloat64OrDefault('abc', CAST('0', 'Float64'))
FORMAT Vertical;

Результат:

Row 1:
──────
toFloat64OrDefault('8', CAST('0', 'Float64')):   8
toFloat64OrDefault('abc', CAST('0', 'Float64')): 0

Смотрите также

toBFloat16

Преобразует входное значение в значение типа BFloat16. Генерирует исключение в случае ошибки.

Синтаксис

toBFloat16(expr)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Выражение.

Поддерживаемые аргументы:

  • Значения типов (U)Int8/16/32/64/128/256.
  • Строковые представления (U)Int8/16/32/128/256.
  • Значения типов Float32/64, включая NaN и Inf.
  • Строковые представления Float32/64, включая NaN и Inf (регистронезависимо).

Возвращаемое значение

  • 16-битное значение brain-float. BFloat16.

Пример

SELECT toBFloat16(toFloat32(42.7))

42.5

SELECT toBFloat16(toFloat32('42.7'));

42.5

SELECT toBFloat16('42.7');

42.5

Смотрите также

toBFloat16OrZero

Преобразует строковое входное значение в значение типа BFloat16. Если строка не представляет собой значение с плавающей точкой, функция возвращает ноль.

Синтаксис

toBFloat16OrZero(x)

Аргументы

  • x — Строковое представление числа. Строка.

Поддерживаемые аргументы:

  • Строковые представления числовых значений.

Неподдерживаемые аргументы (возвращают 0):

  • Строковые представления двоичных и шестнадцатеричных значений.
  • Числовые значения.

Возвращаемое значение

  • 16-битное значение brain-float, иначе 0. BFloat16.
примечание

Функция допускает бесшумную потерю точности при преобразовании из строкового представления.

Пример

SELECT toBFloat16OrZero('0x5E'); -- unsupported arguments

0

SELECT toBFloat16OrZero('12.3'); -- typical use

12.25

SELECT toBFloat16OrZero('12.3456789');

12.3125 -- silent loss of precision

Смотрите также

toBFloat16OrNull

Преобразует строковое входное значение в значение типа BFloat16 но если строка не представляет собой значение с плавающей точкой, функция возвращает NULL.

Синтаксис

toBFloat16OrNull(x)

Аргументы

  • x — Строковое представление числа. Строка.

Поддерживаемые аргументы:

  • Строковые представления числовых значений.

Неподдерживаемые аргументы (возвращают NULL):

  • Строковые представления двоичных и шестнадцатеричных значений.
  • Числовые значения.

Возвращаемое значение

  • 16-битное значение brain-float, иначе NULL (\N). BFloat16.
примечание

Функция допускает бесшумную потерю точности при преобразовании из строкового представления.

Пример

SELECT toBFloat16OrNull('0x5E'); -- unsupported arguments

\N

SELECT toBFloat16OrNull('12.3'); -- typical use

12.25

SELECT toBFloat16OrNull('12.3456789');

12.3125 -- silent loss of precision

Смотрите также

toDate

Преобразует аргумент в тип данных Date.

Если аргумент является DateTime или DateTime64, он усечен и сохраняется только компонент даты из DateTime:

SELECT
    now() AS x,
    toDate(x)
┌───────────────────x─┬─toDate(now())─┐
│ 2022-12-30 13:44:17 │    2022-12-30 │
└─────────────────────┴───────────────┘

Если аргумент является Строкой, он разбирается как Date или DateTime. Если он был разобран как DateTime, используется компонент даты:

SELECT
    toDate('2022-12-30') AS x,
    toTypeName(x)
┌──────────x─┬─toTypeName(toDate('2022-12-30'))─┐
│ 2022-12-30 │ Date                             │
└────────────┴──────────────────────────────────┘

1 row in set. Elapsed: 0.001 sec.
SELECT
    toDate('2022-12-30 01:02:03') AS x,
    toTypeName(x)
┌──────────x─┬─toTypeName(toDate('2022-12-30 01:02:03'))─┐
│ 2022-12-30 │ Date                                      │
└────────────┴───────────────────────────────────────────┘

Если аргумент является числом и выглядит как метка времени UNIX (больше 65535), он интерпретируется как DateTime, а затем усечен до Date в текущем часовом поясе. Аргумент часовых поясов может быть указан в качестве второго аргумента функции. Усечение до Date зависит от часового пояса:

SELECT
    now() AS current_time,
    toUnixTimestamp(current_time) AS ts,
    toDateTime(ts) AS time_Amsterdam,
    toDateTime(ts, 'Pacific/Apia') AS time_Samoa,
    toDate(time_Amsterdam) AS date_Amsterdam,
    toDate(time_Samoa) AS date_Samoa,
    toDate(ts) AS date_Amsterdam_2,
    toDate(ts, 'Pacific/Apia') AS date_Samoa_2
Row 1:
──────
current_time:     2022-12-30 13:51:54
ts:               1672404714
time_Amsterdam:   2022-12-30 13:51:54
time_Samoa:       2022-12-31 01:51:54
date_Amsterdam:   2022-12-30
date_Samoa:       2022-12-31
date_Amsterdam_2: 2022-12-30
date_Samoa_2:     2022-12-31

Приведенный выше пример демонстрирует, как одна и та же метка времени UNIX может интерпретироваться как разные даты в разных часовых поясах.

Если аргумент является числом и меньше 65536, он интерпретируется как количество дней с 1970-01-01 (первый UNIX день) и преобразуется в Date. Это соответствует внутреннему числовому представлению типа Date. Пример:

SELECT toDate(12345)
┌─toDate(12345)─┐
│    2003-10-20 │
└───────────────┘

Это преобразование не зависит от часовых поясов.

Если аргумент не помещается в диапазон типа Date, это приводит к неопределенному поведению реализации, которое может насыщаться до максимальной поддерживаемой даты или переполняться:

SELECT toDate(10000000000.)
┌─toDate(10000000000.)─┐
│           2106-02-07 │
└──────────────────────┘

Функция toDate также может быть записана в альтернативных формах:

SELECT
    now() AS time,
    toDate(time),
    DATE(time),
    CAST(time, 'Date')
┌────────────────time─┬─toDate(now())─┬─DATE(now())─┬─CAST(now(), 'Date')─┐
│ 2022-12-30 13:54:58 │    2022-12-30 │  2022-12-30 │          2022-12-30 │
└─────────────────────┴───────────────┴─────────────┴─────────────────────┘

toDateOrZero

То же самое, что и toDate, но возвращает нижнюю границу Date, если получен недопустимый аргумент. Поддерживается только аргумент Строка.

Пример

Запрос:

SELECT toDateOrZero('2022-12-30'), toDateOrZero('');

Результат:

┌─toDateOrZero('2022-12-30')─┬─toDateOrZero('')─┐
│                 2022-12-30 │       1970-01-01 │
└────────────────────────────┴──────────────────┘

toDateOrNull

То же самое, что и toDate, но возвращает NULL, если получен недопустимый аргумент. Поддерживается только аргумент Строка.

Пример

Запрос:

SELECT toDateOrNull('2022-12-30'), toDateOrNull('');

Результат:

┌─toDateOrNull('2022-12-30')─┬─toDateOrNull('')─┐
│                 2022-12-30 │             ᴺᵁᴸᴸ │
└────────────────────────────┴──────────────────┘

toDateOrDefault

Как и toDate, но если не удается, возвращает значение по умолчанию, которое либо является вторым аргументом (если указан), либо иначе нижней границей Date.

Синтаксис

toDateOrDefault(expr [, default_value])

Пример

Запрос:

SELECT toDateOrDefault('2022-12-30'), toDateOrDefault('', '2023-01-01'::Date);

Результат:

┌─toDateOrDefault('2022-12-30')─┬─toDateOrDefault('', CAST('2023-01-01', 'Date'))─┐
│                    2022-12-30 │                                      2023-01-01 │
└───────────────────────────────┴─────────────────────────────────────────────────┘

toDateTime

Преобразует входное значение в DateTime.

Синтаксис

toDateTime(expr[, time_zone ])

Аргументы

примечание

Если expr является числом, оно интерпретируется как количество секунд с начала эпохи Unix (как метка времени Unix). Если expr является Строкой, он может быть интерпретирован как метка времени Unix или как строковое представление даты / даты с временем. Таким образом, разбор строковых представлений коротких чисел (до 4 цифр) явно отключен из-за двусмысленности, например, строка '1999' может быть как годом (неполное строковое представление даты / даты и времени), так и временной меткой Unix. Более длинные числовые строки разрешены.

Возвращаемое значение

Пример

Запрос:

SELECT toDateTime('2022-12-30 13:44:17'), toDateTime(1685457500, 'UTC');

Результат:

┌─toDateTime('2022-12-30 13:44:17')─┬─toDateTime(1685457500, 'UTC')─┐
│               2022-12-30 13:44:17 │           2023-05-30 14:38:20 │
└───────────────────────────────────┴───────────────────────────────┘

toDateTimeOrZero

То же самое, что и toDateTime, но возвращает нижнюю границу DateTime, если получен недопустимый аргумент. Поддерживается только аргумент Строка.

Пример

Запрос:

SELECT toDateTimeOrZero('2022-12-30 13:44:17'), toDateTimeOrZero('');

Результат:

┌─toDateTimeOrZero('2022-12-30 13:44:17')─┬─toDateTimeOrZero('')─┐
│                     2022-12-30 13:44:17 │  1970-01-01 00:00:00 │
└─────────────────────────────────────────┴──────────────────────┘

toDateTimeOrNull

То же самое, что и toDateTime, но возвращает NULL, если получен недопустимый аргумент. Поддерживается только аргумент Строка.

Пример

Запрос:

SELECT toDateTimeOrNull('2022-12-30 13:44:17'), toDateTimeOrNull('');

Результат:

┌─toDateTimeOrNull('2022-12-30 13:44:17')─┬─toDateTimeOrNull('')─┐
│                     2022-12-30 13:44:17 │                 ᴺᵁᴸᴸ │
└─────────────────────────────────────────┴──────────────────────┘

toDateTimeOrDefault

Как и toDateTime, но если не удается, возвращает значение по умолчанию, которое либо является третьим аргументом (если указан), либо иначе нижней границей DateTime.

Синтаксис

toDateTimeOrDefault(expr [, time_zone [, default_value]])

Пример

Запрос:

SELECT toDateTimeOrDefault('2022-12-30 13:44:17'), toDateTimeOrDefault('', 'UTC', '2023-01-01'::DateTime('UTC'));

Результат:

┌─toDateTimeOrDefault('2022-12-30 13:44:17')─┬─toDateTimeOrDefault('', 'UTC', CAST('2023-01-01', 'DateTime(\'UTC\')'))─┐
│                        2022-12-30 13:44:17 │                                                     2023-01-01 00:00:00 │
└────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────┘

toDate32

Преобразует аргумент в тип Date32. Если значение находится вне диапазона, toDate32 возвращает граничные значения, поддерживаемые Date32. Если аргумент имеет тип Date, учитываются его границы.

Синтаксис

toDate32(expr)

Аргументы

Возвращаемое значение

  • Календарная дата. Тип Date32.

Пример

  1. Значение находится в пределах:
SELECT toDate32('1955-01-01') AS value, toTypeName(value);
┌──────value─┬─toTypeName(toDate32('1925-01-01'))─┐
│ 1955-01-01 │ Date32                             │
└────────────┴────────────────────────────────────┘
  1. Значение находится вне диапазона:
SELECT toDate32('1899-01-01') AS value, toTypeName(value);
┌──────value─┬─toTypeName(toDate32('1899-01-01'))─┐
│ 1900-01-01 │ Date32                             │
└────────────┴────────────────────────────────────┘
  1. С аргументом Date:
SELECT toDate32(toDate('1899-01-01')) AS value, toTypeName(value);
┌──────value─┬─toTypeName(toDate32(toDate('1899-01-01')))─┐
│ 1970-01-01 │ Date32                                     │
└────────────┴────────────────────────────────────────────┘

toDate32OrZero

То же самое, что и toDate32, но возвращает минимальное значение Date32, если получен недопустимый аргумент.

Пример

Запрос:

SELECT toDate32OrZero('1899-01-01'), toDate32OrZero('');

Результат:

┌─toDate32OrZero('1899-01-01')─┬─toDate32OrZero('')─┐
│                   1900-01-01 │         1900-01-01 │
└──────────────────────────────┴────────────────────┘

toDate32OrNull

То же самое, что и toDate32, но возвращает NULL, если получен недопустимый аргумент.

Пример

Запрос:

SELECT toDate32OrNull('1955-01-01'), toDate32OrNull('');

Результат:

┌─toDate32OrNull('1955-01-01')─┬─toDate32OrNull('')─┐
│                   1955-01-01 │               ᴺᵁᴸᴸ │
└──────────────────────────────┴────────────────────┘

toDate32OrDefault

Преобразует аргумент в тип данных Date32. Если значение находится вне диапазона, toDate32OrDefault возвращает минимально допустимое значение, поддерживаемое Date32. Если аргумент имеет тип Date, его границы принимаются во внимание. Возвращает значение по умолчанию, если получен недопустимый аргумент.

Пример

Запрос:

SELECT
    toDate32OrDefault('1930-01-01', toDate32('2020-01-01')),
    toDate32OrDefault('xx1930-01-01', toDate32('2020-01-01'));

Результат:

┌─toDate32OrDefault('1930-01-01', toDate32('2020-01-01'))─┬─toDate32OrDefault('xx1930-01-01', toDate32('2020-01-01'))─┐
│                                              1930-01-01 │                                                2020-01-01 │
└─────────────────────────────────────────────────────────┴───────────────────────────────────────────────────────────┘

toDateTime64

Преобразует входное значение в значение типа DateTime64.

Синтаксис

toDateTime64(expr, scale, [timezone])

Аргументы

  • expr — Значение. String, UInt32, Float или DateTime.
  • scale - Размер тика (точность): 10-precision секунд. Допустимый диапазон: [ 0 : 9 ].
  • timezone (опционально) - Часовой пояс указанного объекта datetime64.

Возвращаемое значение

  • Календарная дата и время суток с точностью до долей секунды. DateTime64.

Пример

  1. Значение находится в пределах диапазона:
SELECT toDateTime64('1955-01-01 00:00:00.000', 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('1955-01-01 00:00:00.000', 3))─┐
│ 1955-01-01 00:00:00.000 │ DateTime64(3)                                          │
└─────────────────────────┴────────────────────────────────────────────────────────┘
  1. В виде десятичного числа с точностью:
SELECT toDateTime64(1546300800.000, 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64(1546300800., 3))─┐
│ 2019-01-01 00:00:00.000 │ DateTime64(3)                            │
└─────────────────────────┴──────────────────────────────────────────┘

Без десятичной точки значение по-прежнему считается Unix Timestamp в секундах:

SELECT toDateTime64(1546300800000, 3) AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64(1546300800000, 3))─┐
│ 2282-12-31 00:00:00.000 │ DateTime64(3)                              │
└─────────────────────────┴────────────────────────────────────────────┘
  1. С timezone:
SELECT toDateTime64('2019-01-01 00:00:00', 3, 'Asia/Istanbul') AS value, toTypeName(value);
┌───────────────────value─┬─toTypeName(toDateTime64('2019-01-01 00:00:00', 3, 'Asia/Istanbul'))─┐
│ 2019-01-01 00:00:00.000 │ DateTime64(3, 'Asia/Istanbul')                                      │
└─────────────────────────┴─────────────────────────────────────────────────────────────────────┘

toDateTime64OrZero

Как toDateTime64, эта функция преобразует входное значение в значение типа DateTime64, но возвращает минимальное значение DateTime64, если был получен недопустимый аргумент.

Синтаксис

toDateTime64OrZero(expr, scale, [timezone])

Аргументы

  • expr — Значение. String, UInt32, Float или DateTime.
  • scale - Размер тика (точность): 10-precision секунд. Допустимый диапазон: [ 0 : 9 ].
  • timezone (опционально) - Часовой пояс указанного объекта DateTime64.

Возвращаемое значение

  • Календарная дата и время суток с точностью до долей секунды, иначе минимальное значение DateTime64: 1970-01-01 01:00:00.000. DateTime64.

Пример

Запрос:

SELECT toDateTime64OrZero('2008-10-12 00:00:00 00:30:30', 3) AS invalid_arg

Результат:

┌─────────────invalid_arg─┐
│ 1970-01-01 01:00:00.000 │
└─────────────────────────┘

См. также

toDateTime64OrNull

Как toDateTime64, эта функция преобразует входное значение в значение типа DateTime64, но возвращает NULL, если был получен недопустимый аргумент.

Синтаксис

toDateTime64OrNull(expr, scale, [timezone])

Аргументы

  • expr — Значение. String, UInt32, Float или DateTime.
  • scale - Размер тика (точность): 10-precision секунд. Допустимый диапазон: [ 0 : 9 ].
  • timezone (опционально) - Часовой пояс указанного объекта DateTime64.

Возвращаемое значение

  • Календарная дата и время суток с точностью до долей секунды, иначе NULL. DateTime64/NULL.

Пример

Запрос:

SELECT
    toDateTime64OrNull('1976-10-18 00:00:00.30', 3) AS valid_arg,
    toDateTime64OrNull('1976-10-18 00:00:00 30', 3) AS invalid_arg

Результат:

┌───────────────valid_arg─┬─invalid_arg─┐
│ 1976-10-18 00:00:00.300 │        ᴺᵁᴸᴸ │
└─────────────────────────┴─────────────┘

См. также

toDateTime64OrDefault

Как toDateTime64, эта функция преобразует входное значение в значение типа DateTime64, но возвращает либо значение по умолчанию DateTime64, либо предоставленное значение по умолчанию, если был получен недопустимый аргумент.

Синтаксис

toDateTime64OrNull(expr, scale, [timezone, default])

Аргументы

  • expr — Значение. String, UInt32, Float или DateTime.
  • scale - Размер тика (точность): 10-precision секунд. Допустимый диапазон: [ 0 : 9 ].
  • timezone (опционально) - Часовой пояс указанного объекта DateTime64.
  • default (опционально) - Значение по умолчанию для возврата, если был получен недопустимый аргумент. DateTime64.

Возвращаемое значение

  • Календарная дата и время суток с точностью до долей секунды, иначе минимальное значение DateTime64 или значение default, если оно предоставлено. DateTime64.

Пример

Запрос:

SELECT
    toDateTime64OrDefault('1976-10-18 00:00:00 30', 3) AS invalid_arg,
    toDateTime64OrDefault('1976-10-18 00:00:00 30', 3, 'UTC', toDateTime64('2001-01-01 00:00:00.00',3)) AS invalid_arg_with_default

Результат:

┌─────────────invalid_arg─┬─invalid_arg_with_default─┐
│ 1970-01-01 01:00:00.000 │  2000-12-31 23:00:00.000 │
└─────────────────────────┴──────────────────────────┘

См. также

toDecimal32

Преобразует входное значение в значение типа Decimal(9, S) с масштабом S. Выдает исключение в случае ошибки.

Синтаксис

toDecimal32(expr, S)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.
  • S — Параметр масштаба от 0 до 9, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int8/16/32/64/128/256.
  • Значения или строковые представления типа Float32/64.

Неподдерживаемые аргументы:

  • Значения или строковые представления типов Float32/64 с NaN и Inf (независимо от регистра).
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal32('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal32: ( -1 * 10^(9 - S), 1 * 10^(9 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к исключению.

предупреждение

Преобразования отбрасывают лишние цифры и могут работать неожиданным образом при работе с входными данными Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal32(1.15, 2) равен 1.14, потому что 1.15 * 100 в формате с плавающей запятой — это 114.99. Вы можете использовать строковый ввод, чтобы операции использовали основной целочисленный тип: toDecimal32('1.15', 2) = 1.15

Возвращаемое значение

Пример

Запрос:

SELECT
    toDecimal32(2, 1) AS a, toTypeName(a) AS type_a,
    toDecimal32(4.2, 2) AS b, toTypeName(b) AS type_b,
    toDecimal32('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical;

Результат:

Row 1:
──────
a:      2
type_a: Decimal(9, 1)
b:      4.2
type_b: Decimal(9, 2)
c:      4.2
type_c: Decimal(9, 3)

См. также

toDecimal32OrZero

Как toDecimal32, эта функция преобразует входное значение в значение типа Decimal(9, S), но возвращает 0 в случае ошибки.

Синтаксис

toDecimal32OrZero(expr, S)

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 9, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal32OrZero('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal32: ( -1 * 10^(9 - S), 1 * 10^(9 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

Возвращаемое значение

  • Значение типа Decimal(9, S), если успешно, иначе 0 с S десятичными знаками. Decimal32(S).

Пример

Запрос:

SELECT
    toDecimal32OrZero(toString(-1.111), 5) AS a,
    toTypeName(a),
    toDecimal32OrZero(toString('Inf'), 5) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             -1.111
toTypeName(a): Decimal(9, 5)
b:             0
toTypeName(b): Decimal(9, 5)

См. также

toDecimal32OrNull

Как toDecimal32, эта функция преобразует входное значение в значение типа Nullable(Decimal(9, S)), но возвращает 0 в случае ошибки.

Синтаксис

toDecimal32OrNull(expr, S)

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 9, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal32OrNull('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal32: ( -1 * 10^(9 - S), 1 * 10^(9 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

Возвращаемое значение

  • Значение типа Nullable(Decimal(9, S)), если успешно, иначе значение NULL того же типа. Decimal32(S).

Примеры

Запрос:

SELECT
    toDecimal32OrNull(toString(-1.111), 5) AS a,
    toTypeName(a),
    toDecimal32OrNull(toString('Inf'), 5) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             -1.111
toTypeName(a): Nullable(Decimal(9, 5))
b:             ᴺᵁᴸᴸ
toTypeName(b): Nullable(Decimal(9, 5))

См. также

toDecimal32OrDefault

Как toDecimal32, эта функция преобразует входное значение в значение типа Decimal(9, S), но возвращает значение по умолчанию в случае ошибки.

Синтаксис

toDecimal32OrDefault(expr, S[, default])

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 9, указывающий, сколько цифр может иметь дробная часть числа. UInt8.
  • default (опционально) — Значение по умолчанию для возврата, если преобразование к типу Decimal32(S) не удалось. Decimal32(S).

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal32OrDefault('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal32: ( -1 * 10^(9 - S), 1 * 10^(9 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

предупреждение

Преобразования отбрасывают лишние цифры и могут работать неожиданным образом при работе с входными данными Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal32OrDefault(1.15, 2) равен 1.14, потому что 1.15 * 100 в формате с плавающей запятой — это 114.99. Вы можете использовать строковый ввод, чтобы операции использовали основной целочисленный тип: toDecimal32OrDefault('1.15', 2) = 1.15

Возвращаемое значение

  • Значение типа Decimal(9, S), если успешно, иначе возвращает значение по умолчанию, если оно передано, или 0, если нет. Decimal32(S).

Примеры

Запрос:

SELECT
    toDecimal32OrDefault(toString(0.0001), 5) AS a,
    toTypeName(a),
    toDecimal32OrDefault('Inf', 0, CAST('-1', 'Decimal32(0)')) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.0001
toTypeName(a): Decimal(9, 5)
b:             -1
toTypeName(b): Decimal(9, 0)

См. также

toDecimal64

Преобразует входное значение в значение типа Decimal(18, S) с масштабом S. Выдает исключение в случае ошибки.

Синтаксис

toDecimal64(expr, S)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.
  • S — Параметр масштаба от 0 до 18, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int8/16/32/64/128/256.
  • Значения или строковые представления типа Float32/64.

Неподдерживаемые аргументы:

  • Значения или строковые представления типов Float32/64 с NaN и Inf (независимо от регистра).
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal64('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal64: ( -1 * 10^(18 - S), 1 * 10^(18 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к исключению.

предупреждение

Преобразования отбрасывают лишние цифры и могут работать неожиданным образом при работе с входными данными Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal64(1.15, 2) равен 1.14, потому что 1.15 * 100 в формате с плавающей запятой — это 114.99. Вы можете использовать строковый ввод, чтобы операции использовали основной целочисленный тип: toDecimal64('1.15', 2) = 1.15

Возвращаемое значение

Пример

Запрос:

SELECT
    toDecimal64(2, 1) AS a, toTypeName(a) AS type_a,
    toDecimal64(4.2, 2) AS b, toTypeName(b) AS type_b,
    toDecimal64('4.2', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical;

Результат:

Row 1:
──────
a:      2
type_a: Decimal(18, 1)
b:      4.2
type_b: Decimal(18, 2)
c:      4.2
type_c: Decimal(18, 3)

См. также

toDecimal64OrZero

Как toDecimal64, эта функция преобразует входное значение в значение типа Decimal(18, S), но возвращает 0 в случае ошибки.

Синтаксис

toDecimal64OrZero(expr, S)

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 18, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal64OrZero('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal64: ( -1 * 10^(18 - S), 1 * 10^(18 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

Возвращаемое значение

  • Значение типа Decimal(18, S), если успешно, иначе 0 с S десятичными знаками. Decimal64(S).

Пример

Запрос:

SELECT
    toDecimal64OrZero(toString(0.0001), 18) AS a,
    toTypeName(a),
    toDecimal64OrZero(toString('Inf'), 18) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.0001
toTypeName(a): Decimal(18, 18)
b:             0
toTypeName(b): Decimal(18, 18)

См. также

toDecimal64OrNull

Как toDecimal64, эта функция преобразует входное значение в значение типа Nullable(Decimal(18, S)), но возвращает 0 в случае ошибки.

Синтаксис

toDecimal64OrNull(expr, S)

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 18, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal64OrNull('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal64: ( -1 * 10^(18 - S), 1 * 10^(18 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

Возвращаемое значение

  • Значение типа Nullable(Decimal(18, S)), если успешно, иначе значение NULL того же типа. Decimal64(S).

Примеры

Запрос:

SELECT
    toDecimal64OrNull(toString(0.0001), 18) AS a,
    toTypeName(a),
    toDecimal64OrNull(toString('Inf'), 18) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.0001
toTypeName(a): Nullable(Decimal(18, 18))
b:             ᴺᵁᴸᴸ
toTypeName(b): Nullable(Decimal(18, 18))

См. также

toDecimal64OrDefault

Как toDecimal64, эта функция преобразует входное значение в значение типа Decimal(18, S), но возвращает значение по умолчанию в случае ошибки.

Синтаксис

toDecimal64OrDefault(expr, S[, default])

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 18, указывающий, сколько цифр может иметь дробная часть числа. UInt8.
  • default (опционально) — Значение по умолчанию для возврата, если преобразование к типу Decimal64(S) не удалось. Decimal64(S).

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal64OrDefault('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal64: ( -1 * 10^(18 - S), 1 * 10^(18 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

предупреждение

Преобразования отбрасывают лишние цифры и могут работать неожиданным образом при работе с входными данными Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal64OrDefault(1.15, 2) равен 1.14, потому что 1.15 * 100 в формате с плавающей запятой — это 114.99. Вы можете использовать строковый ввод, чтобы операции использовали основной целочисленный тип: toDecimal64OrDefault('1.15', 2) = 1.15

Возвращаемое значение

  • Значение типа Decimal(18, S) если успешно, иначе возвращает значение по умолчанию, если оно передано, или 0, если нет. Decimal64(S).

Примеры

Запрос:

SELECT
    toDecimal64OrDefault(toString(0.0001), 18) AS a,
    toTypeName(a),
    toDecimal64OrDefault('Inf', 0, CAST('-1', 'Decimal64(0)')) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.0001
toTypeName(a): Decimal(18, 18)
b:             -1
toTypeName(b): Decimal(18, 0)

См. также

toDecimal128

Преобразует входное значение в значение типа Decimal(38, S) с масштабом S. Выдает исключение в случае ошибки.

Синтаксис

toDecimal128(expr, S)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.
  • S — Параметр масштаба от 0 до 38, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int8/16/32/64/128/256.
  • Значения или строковые представления типа Float32/64.

Неподдерживаемые аргументы:

  • Значения или строковые представления типов Float32/64 с NaN и Inf (независимо от регистра).
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal128('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal128: ( -1 * 10^(38 - S), 1 * 10^(38 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к исключению.

предупреждение

Преобразования отбрасывают лишние цифры и могут работать неожиданным образом при работе с входными данными Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal128(1.15, 2) равен 1.14, потому что 1.15 * 100 в формате с плавающей запятой — это 114.99. Вы можете использовать строковый ввод, чтобы операции использовали основной целочисленный тип: toDecimal128('1.15', 2) = 1.15

Возвращаемое значение

Пример

Запрос:

SELECT
    toDecimal128(99, 1) AS a, toTypeName(a) AS type_a,
    toDecimal128(99.67, 2) AS b, toTypeName(b) AS type_b,
    toDecimal128('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical;

Результат:

Row 1:
──────
a:      99
type_a: Decimal(38, 1)
b:      99.67
type_b: Decimal(38, 2)
c:      99.67
type_c: Decimal(38, 3)

См. также

toDecimal128OrZero

Как toDecimal128, эта функция преобразует входное значение в значение типа Decimal(38, S), но возвращает 0 в случае ошибки.

Синтаксис

toDecimal128OrZero(expr, S)

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 38, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal128OrZero('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal128: ( -1 * 10^(38 - S), 1 * 10^(38 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

Возвращаемое значение

  • Значение типа Decimal(38, S), если успешно, иначе 0 с S десятичными знаками. Decimal128(S).

Пример

Запрос:

SELECT
    toDecimal128OrZero(toString(0.0001), 38) AS a,
    toTypeName(a),
    toDecimal128OrZero(toString('Inf'), 38) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.0001
toTypeName(a): Decimal(38, 38)
b:             0
toTypeName(b): Decimal(38, 38)

См. также

toDecimal128OrNull

Как toDecimal128, эта функция преобразует входное значение в значение типа Nullable(Decimal(38, S)), но возвращает 0 в случае ошибки.

Синтаксис

toDecimal128OrNull(expr, S)

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 38, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal128OrNull('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal128: ( -1 * 10^(38 - S), 1 * 10^(38 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

Возвращаемое значение

  • Значение типа Nullable(Decimal(38, S)), если успешно, иначе значение NULL того же типа. Decimal128(S).

Примеры

Запрос:

SELECT
    toDecimal128OrNull(toString(1/42), 38) AS a,
    toTypeName(a),
    toDecimal128OrNull(toString('Inf'), 38) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.023809523809523808
toTypeName(a): Nullable(Decimal(38, 38))
b:             ᴺᵁᴸᴸ
toTypeName(b): Nullable(Decimal(38, 38))

См. также

toDecimal128OrDefault

Как toDecimal128, эта функция преобразует входное значение в значение типа Decimal(38, S), но возвращает значение по умолчанию в случае ошибки.

Синтаксис

toDecimal128OrDefault(expr, S[, default])

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 38, указывающий, сколько цифр может иметь дробная часть числа. UInt8.
  • default (опционально) — Значение по умолчанию для возврата, если преобразование к типу Decimal128(S) не удалось. Decimal128(S).

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal128OrDefault('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal128: ( -1 * 10^(38 - S), 1 * 10^(38 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

предупреждение

Преобразования отбрасывают лишние цифры и могут работать неожиданным образом при работе с входными данными Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal128OrDefault(1.15, 2) равен 1.14, потому что 1.15 * 100 в формате с плавающей запятой — это 114.99. Вы можете использовать строковый ввод, чтобы операции использовали основной целочисленный тип: toDecimal128OrDefault('1.15', 2) = 1.15

Возвращаемое значение

  • Значение типа Decimal(38, S), если успешно, иначе возвращает значение по умолчанию, если оно передано, или 0, если нет. Decimal128(S).

Примеры

Запрос:

SELECT
    toDecimal128OrDefault(toString(1/42), 18) AS a,
    toTypeName(a),
    toDecimal128OrDefault('Inf', 0, CAST('-1', 'Decimal128(0)')) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.023809523809523808
toTypeName(a): Decimal(38, 18)
b:             -1
toTypeName(b): Decimal(38, 0)

См. также

toDecimal256

Преобразует входное значение в значение типа Decimal(76, S) с масштабом S. Выдает исключение в случае ошибки.

Синтаксис

toDecimal256(expr, S)

Аргументы

  • expr — Выражение, возвращающее число или строковое представление числа. Expression.
  • S — Параметр масштаба от 0 до 76, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Значения или строковые представления типа (U)Int8/16/32/64/128/256.
  • Значения или строковые представления типа Float32/64.

Неподдерживаемые аргументы:

  • Значения или строковые представления типов Float32/64 с NaN и Inf (независимо от регистра).
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal256('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal256: ( -1 * 10^(76 - S), 1 * 10^(76 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к исключению.

предупреждение

Преобразования отбрасывают лишние цифры и могут работать неожиданным образом при работе с входными данными Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal256(1.15, 2) равен 1.14, потому что 1.15 * 100 в формате с плавающей запятой — это 114.99. Вы можете использовать строковый ввод, чтобы операции использовали основной целочисленный тип: toDecimal256('1.15', 2) = 1.15

Возвращаемое значение

Пример

Запрос:

SELECT
    toDecimal256(99, 1) AS a, toTypeName(a) AS type_a,
    toDecimal256(99.67, 2) AS b, toTypeName(b) AS type_b,
    toDecimal256('99.67', 3) AS c, toTypeName(c) AS type_c
FORMAT Vertical;

Результат:

Row 1:
──────
a:      99
type_a: Decimal(76, 1)
b:      99.67
type_b: Decimal(76, 2)
c:      99.67
type_c: Decimal(76, 3)

См. также

toDecimal256OrZero

Как toDecimal256, эта функция преобразует входное значение в значение типа Decimal(76, S), но возвращает 0 в случае ошибки.

Синтаксис

toDecimal256OrZero(expr, S)

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 76, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal256OrZero('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal256: ( -1 * 10^(76 - S), 1 * 10^(76 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

Возвращаемое значение

  • Значение типа Decimal(76, S), если успешно, иначе 0 с S десятичными знаками. Decimal256(S).

Пример

Запрос:

SELECT
    toDecimal256OrZero(toString(0.0001), 76) AS a,
    toTypeName(a),
    toDecimal256OrZero(toString('Inf'), 76) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.0001
toTypeName(a): Decimal(76, 76)
b:             0
toTypeName(b): Decimal(76, 76)

См. также

toDecimal256OrNull

Как toDecimal256, эта функция преобразует входное значение в значение типа Nullable(Decimal(76, S)), но возвращает 0 в случае ошибки.

Синтаксис

toDecimal256OrNull(expr, S)

Аргументы

  • expr — Строковое представление числа. String.
  • S — Параметр масштаба от 0 до 76, указывающий, сколько цифр может иметь дробная часть числа. UInt8.

Поддерживаемые аргументы:

  • Строковые представления типов (U)Int8/16/32/64/128/256.
  • Строковые представления типов Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления типов Float32/64 с NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например, SELECT toDecimal256OrNull('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal256: ( -1 * 10^(76 - S), 1 * 10^(76 - S) ). Слишком много цифр в дробной части отбрасывается (не округляется). Слишком много цифр в целой части приведет к ошибке.

Возвращаемое значение

  • Значение типа Nullable(Decimal(76, S)), если успешно, иначе значение NULL того же типа. Decimal256(S).

Примеры

Запрос:

SELECT
    toDecimal256OrNull(toString(1/42), 76) AS a,
    toTypeName(a),
    toDecimal256OrNull(toString('Inf'), 76) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.023809523809523808
toTypeName(a): Nullable(Decimal(76, 76))
b:             ᴺᵁᴸᴸ
toTypeName(b): Nullable(Decimal(76, 76))

См. также

toDecimal256OrDefault

Как и toDecimal256, эта функция преобразует входное значение в значение типа Decimal(76, S), но возвращает значение по умолчанию в случае ошибки.

Синтаксис

toDecimal256OrDefault(expr, S[, default])

Аргументы

  • expr — строковое представление числа. String.
  • S — параметр масштаба от 0 до 76, указывающий, сколько цифр может содержать дробная часть числа. UInt8.
  • default (опционально) — значение по умолчанию, которое возвращается, если преобразование в тип Decimal256(S) не удалось. Decimal256(S).

Поддерживаемые аргументы:

  • Строковые представления типа (U)Int8/16/32/64/128/256.
  • Строковые представления типа Float32/64.

Неподдерживаемые аргументы:

  • Строковые представления значений Float32/64 NaN и Inf.
  • Строковые представления двоичных и шестнадцатеричных значений, например SELECT toDecimal256OrDefault('0xc0fe', 1);.
примечание

Переполнение может произойти, если значение expr превышает пределы Decimal256: ( -1 * 10^(76 - S), 1 * 10^(76 - S) ). Избыточные цифры в дробной части отбрасываются (не округляются). Избыточные цифры в целой части приведут к ошибке.

предупреждение

Преобразования отбрасывают дополнительные цифры и могут работать неожиданным образом при работе с входными значениями Float32/Float64, так как операции выполняются с использованием инструкций с плавающей запятой. Например: toDecimal256OrDefault(1.15, 2) равняется 1.14, потому что 1.15 * 100 в формате с плавающей запятой равно 114.99. Вы можете использовать строковый ввод, чтобы операции использовали внутренний целочисленный тип: toDecimal256OrDefault('1.15', 2) = 1.15

Возвращаемое значение

  • Значение типа Decimal(76, S), если операция успешна, иначе возвращает значение по умолчанию, если оно было передано, или 0, если не было. Decimal256(S).

Примеры

Запрос:

SELECT
    toDecimal256OrDefault(toString(1/42), 76) AS a,
    toTypeName(a),
    toDecimal256OrDefault('Inf', 0, CAST('-1', 'Decimal256(0)')) AS b,
    toTypeName(b)
FORMAT Vertical;

Результат:

Row 1:
──────
a:             0.023809523809523808
toTypeName(a): Decimal(76, 76)
b:             -1
toTypeName(b): Decimal(76, 0)

Смотрите также

toString

Преобразует значения в их строковое представление. Для аргументов DateTime функция может принимать второй строковый аргумент, содержащий название временной зоны.

Синтаксис

toString(value[, timezone])

Аргументы

  • value: Значение для преобразования в строку. Any.
  • timezone: Необязательно. Название временной зоны для преобразования DateTime. String.

Возвращаемое значение

  • Возвращает строковое представление входного значения. String.

Примеры

Пример использования

SELECT
    now() AS ts,
    time_zone,
    toString(ts, time_zone) AS str_tz_datetime
FROM system.time_zones
WHERE time_zone LIKE 'Europe%'
LIMIT 10;
┌──────────────────ts─┬─time_zone─────────┬─str_tz_datetime─────┐
│ 2023-09-08 19:14:59 │ Europe/Amsterdam  │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Andorra    │ 2023-09-08 21:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Astrakhan  │ 2023-09-08 23:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Athens     │ 2023-09-08 22:14:59 │
│ 2023-09-08 19:14:59 │ Europe/Belfast    │ 2023-09-08 20:14:59 │
└─────────────────────┴───────────────────┴─────────────────────┘

toFixedString

Преобразует аргумент типа String в тип FixedString(N) (строка фиксированной длины N). Если строка имеет меньше байт, чем N, она дополнена нулевыми байтами справа. Если строка имеет больше байт, чем N, будет выброшено исключение.

Синтаксис

toFixedString(s, N)

Аргументы

  • s — строка для преобразования в фиксированную строку. String.
  • N — длина N. UInt8

Возвращаемое значение

  • Строка фиксированной длины N из s. FixedString.

Пример

Запрос:

SELECT toFixedString('foo', 8) AS s;

Результат:

┌─s─────────────┐
│ foo\0\0\0\0\0 │
└───────────────┘

toStringCutToZero

Принимает аргумент String или FixedString. Возвращает строку с содержимым, обрезанным на первом нулевом байте.

Синтаксис

toStringCutToZero(s)

Пример

Запрос:

SELECT toFixedString('foo', 8) AS s, toStringCutToZero(s) AS s_cut;

Результат:

┌─s─────────────┬─s_cut─┐
│ foo\0\0\0\0\0 │ foo   │
└───────────────┴───────┘

Запрос:

SELECT toFixedString('foo\0bar', 8) AS s, toStringCutToZero(s) AS s_cut;

Результат:

┌─s──────────┬─s_cut─┐
│ foo\0bar\0 │ foo   │
└────────────┴───────┘

toDecimalString

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

Синтаксис

toDecimalString(number, scale)

Аргументы

  • number — значение, которое должно быть представлено в виде строки, Int, UInt, Float, Decimal,
  • scale — количество дробных знаков, UInt8.
    • Максимальный масштаб для типов Decimal и Int, UInt равен 77 (это максимальное возможное количество значащих цифр для Decimal),
    • Максимальный масштаб для Float равен 60.

Возвращаемое значение

  • Входное значение, представленное как String с заданным количеством дробных знаков (масштаба). Число округляется вверх или вниз согласно общим арифметическим правилам в случае, если запрашиваемый масштаб меньше масштаба исходного числа.

Пример

Запрос:

SELECT toDecimalString(CAST('64.32', 'Float64'), 5);

Результат:

┌toDecimalString(CAST('64.32', 'Float64'), 5)─┐
│ 64.32000                                    │
└─────────────────────────────────────────────┘

reinterpretAsUInt8

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа UInt8. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsUInt8(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как UInt8. UInt8.

Пример

Запрос:

SELECT
    toInt8(257) AS x,
    toTypeName(x),
    reinterpretAsUInt8(x) AS res,
    toTypeName(res);

Результат:

┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ Int8          │   1 │ UInt8           │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt16

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа UInt16. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsUInt16(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как UInt16. UInt16.

Пример

Запрос:

SELECT
    toUInt8(257) AS x,
    toTypeName(x),
    reinterpretAsUInt16(x) AS res,
    toTypeName(res);

Результат:

┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8         │   1 │ UInt16          │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt32

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа UInt32. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsUInt32(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как UInt32. UInt32.

Пример

Запрос:

SELECT
    toUInt16(257) AS x,
    toTypeName(x),
    reinterpretAsUInt32(x) AS res,
    toTypeName(res)

Результат:

┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt16        │ 257 │ UInt32          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt64

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа UInt64. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsUInt64(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как UInt64. UInt64.

Пример

Запрос:

SELECT
    toUInt32(257) AS x,
    toTypeName(x),
    reinterpretAsUInt64(x) AS res,
    toTypeName(res)

Результат:

┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt32        │ 257 │ UInt64          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt128

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа UInt128. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsUInt128(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как UInt128. UInt128.

Пример

Запрос:

SELECT
    toUInt64(257) AS x,
    toTypeName(x),
    reinterpretAsUInt128(x) AS res,
    toTypeName(res)

Результат:

┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt64        │ 257 │ UInt128         │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsUInt256

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа UInt256. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsUInt256(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как UInt256. UInt256.

Пример

Запрос:

SELECT
    toUInt128(257) AS x,
    toTypeName(x),
    reinterpretAsUInt256(x) AS res,
    toTypeName(res)

Результат:

┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ UInt128       │ 257 │ UInt256         │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt8

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа Int8. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsInt8(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как Int8. Int8.

Пример

Запрос:

SELECT
    toUInt8(257) AS x,
    toTypeName(x),
    reinterpretAsInt8(x) AS res,
    toTypeName(res);

Результат:

┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ UInt8         │   1 │ Int8            │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsInt16

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа Int16. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsInt16(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как Int16. Int16.

Пример

Запрос:

SELECT
    toInt8(257) AS x,
    toTypeName(x),
    reinterpretAsInt16(x) AS res,
    toTypeName(res);

Результат:

┌─x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 1 │ Int8          │   1 │ Int16           │
└───┴───────────────┴─────┴─────────────────┘

reinterpretAsInt32

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа Int32. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsInt32(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как Int32. Int32.

Пример

Запрос:

SELECT
    toInt16(257) AS x,
    toTypeName(x),
    reinterpretAsInt32(x) AS res,
    toTypeName(res);

Результат:

┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int16         │ 257 │ Int32           │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt64

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа Int64. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsInt64(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как Int64. Int64.

Пример

Запрос:

SELECT
    toInt32(257) AS x,
    toTypeName(x),
    reinterpretAsInt64(x) AS res,
    toTypeName(res);

Результат:

┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int32         │ 257 │ Int64           │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt128

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа Int128. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsInt128(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как Int128. Int128.

Пример

Запрос:

SELECT
    toInt64(257) AS x,
    toTypeName(x),
    reinterpretAsInt128(x) AS res,
    toTypeName(res);

Результат:

┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int64         │ 257 │ Int128          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsInt256

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа Int256. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsInt256(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как Int256. Int256.

Пример

Запрос:

SELECT
    toInt128(257) AS x,
    toTypeName(x),
    reinterpretAsInt256(x) AS res,
    toTypeName(res);

Результат:

┌───x─┬─toTypeName(x)─┬─res─┬─toTypeName(res)─┐
│ 257 │ Int128        │ 257 │ Int256          │
└─────┴───────────────┴─────┴─────────────────┘

reinterpretAsFloat32

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа Float32. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsFloat32(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как Float32. Float32.

Пример

Запрос:

SELECT reinterpretAsUInt32(toFloat32(0.2)) AS x, reinterpretAsFloat32(x);

Результат:

┌──────────x─┬─reinterpretAsFloat32(x)─┐
│ 1045220557 │                     0.2 │
└────────────┴─────────────────────────┘

reinterpretAsFloat64

Выполняет переинтерпретацию байтов, рассматривая входное значение как значение типа Float64. В отличие от CAST, функция не пытается сохранить исходное значение - если целевой тип не может представить входной тип, результат оказывается бессмысленным.

Синтаксис

reinterpretAsFloat64(x)

Параметры

Возвращаемое значение

  • Переинтерпретированное значение x как Float64. Float64.

Пример

Запрос:

SELECT reinterpretAsUInt64(toFloat64(0.2)) AS x, reinterpretAsFloat64(x);

Результат:

┌───────────────────x─┬─reinterpretAsFloat64(x)─┐
│ 4596373779694328218 │                     0.2 │
└─────────────────────┴─────────────────────────┘

reinterpretAsDate

Принимает строку, фиксированную строку или числовое значение и интерпретирует байты как число в порядке хоста (младший бит первым). Возвращает дату, интерпретированную из числа, как количество дней с начала эпохи Unix.

Синтаксис

reinterpretAsDate(x)

Параметры

Возвращаемое значение

Детали реализации

примечание

Если переданная строка недостаточной длины, функция работает так, будто строка дополнена необходимым количеством нулевых байтов. Если строка длиннее, чем необходимо, лишние байты игнорируются.

Пример

Запрос:

SELECT reinterpretAsDate(65), reinterpretAsDate('A');

Результат:

┌─reinterpretAsDate(65)─┬─reinterpretAsDate('A')─┐
│            1970-03-07 │             1970-03-07 │
└───────────────────────┴────────────────────────┘

reinterpretAsDateTime

Эти функции принимают строку и интерпретируют байты, размещенные в начале строки, как число в порядке хоста (младший бит первым). Возвращает дату с временем, интерпретированным как количество секунд с начала эпохи Unix.

Синтаксис

reinterpretAsDateTime(x)

Параметры

Возвращаемое значение

Детали реализации

примечание

Если переданная строка недостаточной длины, функция работает так, будто строка дополнена необходимым количеством нулевых байтов. Если строка длиннее, чем необходимо, лишние байты игнорируются.

Пример

Запрос:

SELECT reinterpretAsDateTime(65), reinterpretAsDateTime('A');

Результат:

┌─reinterpretAsDateTime(65)─┬─reinterpretAsDateTime('A')─┐
│       1970-01-01 01:01:05 │        1970-01-01 01:01:05 │
└───────────────────────────┴────────────────────────────┘

reinterpretAsString

Эта функция принимает число, дату или дату с временем и возвращает строку, содержащую байты, представляющие соответствующее значение в порядке хоста (младший бит первым). Нулевые байты отбрасываются с конца. Например, значение типа UInt32, равное 255, является строкой длиной один байт.

Синтаксис

reinterpretAsString(x)

Параметры

Возвращаемое значение

  • Строка, содержащая байты, представляющие x. String.

Пример

Запрос:

SELECT
    reinterpretAsString(toDateTime('1970-01-01 01:01:05')),
    reinterpretAsString(toDate('1970-03-07'));

Результат:

┌─reinterpretAsString(toDateTime('1970-01-01 01:01:05'))─┬─reinterpretAsString(toDate('1970-03-07'))─┐
│ A                                                      │ A                                         │
└────────────────────────────────────────────────────────┴───────────────────────────────────────────┘

reinterpretAsFixedString

Эта функция принимает число, дату или дату с временем и возвращает FixedString, содержащую байты, представляющие соответствующее значение в порядке хоста (младший бит первым). Нулевые байты отбрасываются с конца. Например, значение типа UInt32, равное 255, является FixedString длиной один байт.

Синтаксис

reinterpretAsFixedString(x)

Параметры

Возвращаемое значение

  • Фиксированная строка, содержащая байты, представляющие x. FixedString.

Пример

Запрос:

SELECT
    reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05')),
    reinterpretAsFixedString(toDate('1970-03-07'));

Результат:

┌─reinterpretAsFixedString(toDateTime('1970-01-01 01:01:05'))─┬─reinterpretAsFixedString(toDate('1970-03-07'))─┐
│ A                                                           │ A                                              │
└─────────────────────────────────────────────────────────────┴────────────────────────────────────────────────┘

reinterpretAsUUID

примечание

В дополнение к функциям UUID, перечисленным здесь, существует специализированная документация по функциям UUID.

Принимает строку длиной 16 байт и возвращает UUID, интерпретируя каждую 8-байтовую половину в порядке байтов little-endian. Если строка недостаточной длины, функция работает так, будто строка дополнена необходимым количеством нулевых байтов до конца. Если строка длиннее 16 байт, лишние байты в конце игнорируются.

Синтаксис

reinterpretAsUUID(fixed_string)

Аргументы

  • fixed_string — байтовая строка в порядке big-endian. FixedString.

Возвращаемое значение

  • Значение типа UUID. UUID.

Примеры

Строка в UUID.

Запрос:

SELECT reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')));

Результат:

┌─reinterpretAsUUID(reverse(unhex('000102030405060708090a0b0c0d0e0f')))─┐
│                                  08090a0b-0c0d-0e0f-0001-020304050607 │
└───────────────────────────────────────────────────────────────────────┘

Обратное преобразование из строки в UUID.

Запрос:

WITH
    generateUUIDv4() AS uuid,
    identity(lower(hex(reverse(reinterpretAsString(uuid))))) AS str,
    reinterpretAsUUID(reverse(unhex(str))) AS uuid2
SELECT uuid = uuid2;

Результат:

┌─equals(uuid, uuid2)─┐
│                   1 │
└─────────────────────┘

reinterpret

Использует ту же последовательность байтов в памяти для значения x и переинтерпретирует его в целевой тип.

Синтаксис

reinterpret(x, type)

Аргументы

  • x — любой тип.
  • type — целевой тип. Если это массив, то тип элементов массива должен быть фиксированной длины.

Возвращаемое значение

  • Значение целевого типа.

Примеры

Запрос:

SELECT reinterpret(toInt8(-1), 'UInt8') AS int_to_uint,
    reinterpret(toInt8(1), 'Float32') AS int_to_float,
    reinterpret('1', 'UInt32') AS string_to_int;

Результат:

┌─int_to_uint─┬─int_to_float─┬─string_to_int─┐
│         255 │        1e-45 │            49 │
└─────────────┴──────────────┴───────────────┘

Запрос:

SELECT reinterpret(x'3108b4403108d4403108b4403108d440', 'Array(Float32)') AS string_to_array_of_Float32;

Результат:

┌─string_to_array_of_Float32─┐
│ [5.626,6.626,5.626,6.626]  │
└────────────────────────────┘

CAST

Преобразует входное значение в указанный тип данных. В отличие от функции reinterpret, CAST пытается представить то же значение, используя новый тип данных. Если преобразование невозможно, будет вызвано исключение. Поддерживаются несколько вариантов синтаксиса.

Синтаксис

CAST(x, T)
CAST(x AS t)
x::t

Аргументы

  • x — значение для преобразования. Может быть любого типа.
  • T — имя целевого типа данных. String.
  • t — целевой тип данных.

Возвращаемое значение

  • Преобразованное значение.
примечание

Если входное значение не помещается в пределы целевого типа, результат переполняется. Например, CAST(-1, 'UInt8') возвращает 255.

Примеры

Запрос:

SELECT
    CAST(toInt8(-1), 'UInt8') AS cast_int_to_uint,
    CAST(1.5 AS Decimal(3,2)) AS cast_float_to_decimal,
    '1'::Int32 AS cast_string_to_int;

Результат:

┌─cast_int_to_uint─┬─cast_float_to_decimal─┬─cast_string_to_int─┐
│              255 │                  1.50 │                  1 │
└──────────────────┴───────────────────────┴────────────────────┘

Запрос:

SELECT
    '2016-06-15 23:00:00' AS timestamp,
    CAST(timestamp AS DateTime) AS datetime,
    CAST(timestamp AS Date) AS date,
    CAST(timestamp, 'String') AS string,
    CAST(timestamp, 'FixedString(22)') AS fixed_string;

Результат:

┌─timestamp───────────┬────────────datetime─┬───────date─┬─string──────────────┬─fixed_string──────────────┐
│ 2016-06-15 23:00:00 │ 2016-06-15 23:00:00 │ 2016-06-15 │ 2016-06-15 23:00:00 │ 2016-06-15 23:00:00\0\0\0 │
└─────────────────────┴─────────────────────┴────────────┴─────────────────────┴───────────────────────────┘

Преобразование в FixedString (N) работает только для аргументов типа String или FixedString.

Поддерживается преобразование типов в Nullable и обратно.

Пример

Запрос:

SELECT toTypeName(x) FROM t_null;

Результат:

┌─toTypeName(x)─┐
│ Int8          │
│ Int8          │
└───────────────┘

Запрос:

SELECT toTypeName(CAST(x, 'Nullable(UInt16)')) FROM t_null;

Результат:

┌─toTypeName(CAST(x, 'Nullable(UInt16)'))─┐
│ Nullable(UInt16)                        │
│ Nullable(UInt16)                        │
└─────────────────────────────────────────┘

Смотрите также

accurateCast(x, T)

Преобразует x в тип данных T.

Отличие от cast заключается в том, что accurateCast не допускает переполнение числовых типов при преобразовании, если значение типа x не помещается в пределы типа T. Например, accurateCast(-1, 'UInt8') вызывает исключение.

Пример

Запрос:

SELECT cast(-1, 'UInt8') AS uint8;

Результат:

┌─uint8─┐
│   255 │
└───────┘

Запрос:

SELECT accurateCast(-1, 'UInt8') AS uint8;

Результат:

Code: 70. DB::Exception: Received from localhost:9000. DB::Exception: Value in column Int8 cannot be safely converted into type UInt8: While processing accurateCast(-1, 'UInt8') AS uint8.

accurateCastOrNull(x, T)

Преобразует входное значение x в указанный тип данных T. Всегда возвращает тип Nullable и возвращает NULL, если значение при преобразовании не может быть представлено в целевом типе.

Синтаксис

accurateCastOrNull(x, T)

Аргументы

  • x — входное значение.
  • T — имя возвращаемого типа данных.

Возвращаемое значение

  • Значение, преобразованное в указанный тип данных T.

Пример

Запрос:

SELECT toTypeName(accurateCastOrNull(5, 'UInt8'));

Результат:

┌─toTypeName(accurateCastOrNull(5, 'UInt8'))─┐
│ Nullable(UInt8)                            │
└────────────────────────────────────────────┘

Запрос:

SELECT
    accurateCastOrNull(-1, 'UInt8') AS uint8,
    accurateCastOrNull(128, 'Int8') AS int8,
    accurateCastOrNull('Test', 'FixedString(2)') AS fixed_string;

Результат:

┌─uint8─┬─int8─┬─fixed_string─┐
│  ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ         │
└───────┴──────┴──────────────┘

accurateCastOrDefault(x, T[, default_value])

Преобразует входное значение x в указанный тип данных T. Возвращает значение по умолчанию типа или default_value, если оно указано, если значение при преобразовании не может быть представлено в целевом типе.

Синтаксис

accurateCastOrDefault(x, T)

Аргументы

  • x — входное значение.
  • T — имя возвращаемого типа данных.
  • default_value — значение по умолчанию для возвращаемого типа данных.

Возвращаемое значение

  • Значение, преобразованное в указанный тип данных T.

Пример

Запрос:

SELECT toTypeName(accurateCastOrDefault(5, 'UInt8'));

Результат:

┌─toTypeName(accurateCastOrDefault(5, 'UInt8'))─┐
│ UInt8                                         │
└───────────────────────────────────────────────┘

Запрос:

SELECT
    accurateCastOrDefault(-1, 'UInt8') AS uint8,
    accurateCastOrDefault(-1, 'UInt8', 5) AS uint8_default,
    accurateCastOrDefault(128, 'Int8') AS int8,
    accurateCastOrDefault(128, 'Int8', 5) AS int8_default,
    accurateCastOrDefault('Test', 'FixedString(2)') AS fixed_string,
    accurateCastOrDefault('Test', 'FixedString(2)', 'Te') AS fixed_string_default;

Результат:

┌─uint8─┬─uint8_default─┬─int8─┬─int8_default─┬─fixed_string─┬─fixed_string_default─┐
│     0 │             5 │    0 │            5 │              │ Te                   │
└───────┴───────────────┴──────┴──────────────┴──────────────┴──────────────────────┘

toInterval

Создает значение типа Interval из числового значения и единицы интервала (например, 'секунда' или 'день').

Синтаксис

toInterval(value, unit)

Аргументы

  • value — длина интервала. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

  • unit — тип создаваемого интервала. Строковый литерал. Возможные значения:

    • наносекунда
    • микросекунда
    • миллисекунда
    • секунда
    • минута
    • час
    • день
    • неделя
    • месяц
    • квартал
    • год

    Аргумент unit не чувствителен к регистру.

Возвращаемое значение

  • Полученный интервал. Interval

Пример

SELECT toDateTime('2025-01-01 00:00:00') + toInterval(1, 'hour')
┌─toDateTime('2025-01-01 00:00:00') + toInterval(1, 'hour') ─┐
│                                        2025-01-01 01:00:00 │
└────────────────────────────────────────────────────────────┘

toIntervalYear

Возвращает интервал n лет типа IntervalYear.

Синтаксис

toIntervalYear(n)

Аргументы

  • n — количество лет. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDate('2024-06-15') AS date,
    toIntervalYear(1) AS interval_to_year
SELECT date + interval_to_year AS result

Результат:

┌─────result─┐
│ 2025-06-15 │
└────────────┘

toIntervalQuarter

Возвращает интервал n кварталов типа IntervalQuarter.

Синтаксис

toIntervalQuarter(n)

Аргументы

  • n — количество кварталов. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDate('2024-06-15') AS date,
    toIntervalQuarter(1) AS interval_to_quarter
SELECT date + interval_to_quarter AS result

Результат:

┌─────result─┐
│ 2024-09-15 │
└────────────┘

toIntervalMonth

Возвращает интервал n месяцев типа IntervalMonth.

Синтаксис

toIntervalMonth(n)

Аргументы

  • n — количество месяцев. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDate('2024-06-15') AS date,
    toIntervalMonth(1) AS interval_to_month
SELECT date + interval_to_month AS result

Результат:

┌─────result─┐
│ 2024-07-15 │
└────────────┘

toIntervalWeek

Возвращает интервал n недель типа IntervalWeek.

Синтаксис

toIntervalWeek(n)

Аргументы

  • n — количество недель. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDate('2024-06-15') AS date,
    toIntervalWeek(1) AS interval_to_week
SELECT date + interval_to_week AS result

Результат:

┌─────result─┐
│ 2024-06-22 │
└────────────┘

toIntervalDay

Возвращает интервал n дней типа IntervalDay.

Синтаксис

toIntervalDay(n)

Аргументы

  • n — количество дней. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDate('2024-06-15') AS date,
    toIntervalDay(5) AS interval_to_days
SELECT date + interval_to_days AS result

Результат:

┌─────result─┐
│ 2024-06-20 │
└────────────┘

toIntervalHour

Возвращает интервал n часов типа IntervalHour.

Синтаксис

toIntervalHour(n)

Аргументы

  • n — количество часов. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDate('2024-06-15') AS date,
    toIntervalHour(12) AS interval_to_hours
SELECT date + interval_to_hours AS result

Результат:

┌──────────────result─┐
│ 2024-06-15 12:00:00 │
└─────────────────────┘

toIntervalMinute

Возвращает интервал n минут типа IntervalMinute.

Синтаксис

toIntervalMinute(n)

Аргументы

  • n — количество минут. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDate('2024-06-15') AS date,
    toIntervalMinute(12) AS interval_to_minutes
SELECT date + interval_to_minutes AS result

Результат:

┌──────────────result─┐
│ 2024-06-15 00:12:00 │
└─────────────────────┘

toIntervalSecond

Возвращает интервал n секунд типа IntervalSecond.

Синтаксис

toIntervalSecond(n)

Аргументы

  • n — количество секунд. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDate('2024-06-15') AS date,
    toIntervalSecond(30) AS interval_to_seconds
SELECT date + interval_to_seconds AS result

Результат:

┌──────────────result─┐
│ 2024-06-15 00:00:30 │
└─────────────────────┘

toIntervalMillisecond

Возвращает интервал n миллисекунд типа IntervalMillisecond.

Синтаксис

toIntervalMillisecond(n)

Аргументы

  • n — количество миллисекунд. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDateTime('2024-06-15') AS date,
    toIntervalMillisecond(30) AS interval_to_milliseconds
SELECT date + interval_to_milliseconds AS result

Результат:

┌──────────────────result─┐
│ 2024-06-15 00:00:00.030 │
└─────────────────────────┘

toIntervalMicrosecond

Возвращает интервал в n микросекундах типа данных IntervalMicrosecond.

Синтаксис

toIntervalMicrosecond(n)

Аргументы

  • n — Количество микросекунд. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDateTime('2024-06-15') AS date,
    toIntervalMicrosecond(30) AS interval_to_microseconds
SELECT date + interval_to_microseconds AS result

Результат:

┌─────────────────────result─┐
│ 2024-06-15 00:00:00.000030 │
└────────────────────────────┘

toIntervalNanosecond

Возвращает интервал в n наносекундах типа данных IntervalNanosecond.

Синтаксис

toIntervalNanosecond(n)

Аргументы

  • n — Количество наносекунд. Целые числа или строковые представления, а также дробные числа. (U)Int*/Float*/String.

Возвращаемые значения

Пример

Запрос:

WITH
    toDateTime('2024-06-15') AS date,
    toIntervalNanosecond(30) AS interval_to_nanoseconds
SELECT date + interval_to_nanoseconds AS result

Результат:

┌────────────────────────result─┐
│ 2024-06-15 00:00:00.000000030 │
└───────────────────────────────┘

parseDateTime

Преобразует String в DateTime в соответствии со строкой формата MySQL.

Эта функция является обратным действием функции formatDateTime.

Синтаксис

parseDateTime(str[, format[, timezone]])

Аргументы

  • str — Строка, которую нужно разобрать
  • format — Строка формата. Необязательно. %Y-%m-%d %H:%i:%s, если не указано.
  • timezoneЧасовой пояс. Необязательно.

Возвращаемое значение(я)

Возвращает значение DateTime, разобранное из входной строки в соответствии со строкой формата в стиле MySQL.

Поддерживаемые спецификаторы формата

Все спецификаторы формата, перечисленные в formatDateTime, кроме:

  • %Q: Квартал (1-4)

Пример

SELECT parseDateTime('2021-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')

┌─parseDateTime('2021-01-04+23:00:00', '%Y-%m-%d+%H:%i:%s')─┐
│                                       2021-01-04 23:00:00 │
└───────────────────────────────────────────────────────────┘

Псевдоним: TO_TIMESTAMP.

parseDateTimeOrZero

То же самое, что и для parseDateTime, за исключением того, что он возвращает дату ноль, когда встречает формат даты, который не может быть обработан.

parseDateTimeOrNull

То же самое, что и для parseDateTime, за исключением того, что он возвращает NULL, когда встречает формат даты, который не может быть обработан.

Псевдоним: str_to_date.

parseDateTimeInJodaSyntax

Похоже на parseDateTime, за исключением того, что строка формата находится в формате Joda, а не в синтаксисе MySQL.

Эта функция является обратным действием функции formatDateTimeInJodaSyntax.

Синтаксис

parseDateTimeInJodaSyntax(str[, format[, timezone]])

Аргументы

  • str — Строка, которую нужно разобрать
  • format — Строка формата. Необязательно. yyyy-MM-dd HH:mm:ss, если не указано.
  • timezoneЧасовой пояс. Необязательно.

Возвращаемое значение(я)

Возвращает значение DateTime, разобранное из входной строки в соответствии со строкой формата в стиле Joda.

Поддерживаемые спецификаторы формата

Все спецификаторы формата, перечисленные в formatDateTimeInJodaSyntax, поддерживаются, за исключением:

  • S: дробная секунда
  • z: часовой пояс
  • Z: смещение/идентификатор часового пояса

Пример

SELECT parseDateTimeInJodaSyntax('2023-02-24 14:53:31', 'yyyy-MM-dd HH:mm:ss', 'Europe/Minsk')

┌─parseDateTimeInJodaSyntax('2023-02-24 14:53:31', 'yyyy-MM-dd HH:mm:ss', 'Europe/Minsk')─┐
│                                                                     2023-02-24 14:53:31 │
└─────────────────────────────────────────────────────────────────────────────────────────┘

parseDateTimeInJodaSyntaxOrZero

То же самое, что и для parseDateTimeInJodaSyntax, за исключением того, что он возвращает дату ноль, когда встречает формат даты, который не может быть обработан.

parseDateTimeInJodaSyntaxOrNull

То же самое, что и для parseDateTimeInJodaSyntax, за исключением того, что он возвращает NULL, когда встречает формат даты, который не может быть обработан.

parseDateTime64

Преобразует String в DateTime64 в соответствии со строкой формата MySQL.

Синтаксис

parseDateTime64(str[, format[, timezone]])

Аргументы

  • str — Строка, которую нужно разобрать.
  • format — Строка формата. Необязательно. %Y-%m-%d %H:%i:%s.%f, если не указано.
  • timezoneЧасовой пояс. Необязательно.

Возвращаемое значение(я)

Возвращает значение DateTime64, разобранное из входной строки в соответствии со строкой формата в стиле MySQL. Точность возвращаемого значения составляет 6.

parseDateTime64OrZero

То же самое, что и для parseDateTime64, за исключением того, что он возвращает дату ноль, когда встречает формат даты, который не может быть обработан.

parseDateTime64OrNull

То же самое, что и для parseDateTime64, за исключением того, что он возвращает NULL, когда встречает формат даты, который не может быть обработан.

parseDateTime64InJodaSyntax

Преобразует String в DateTime64 в соответствии со строкой формата Joda.

Синтаксис

parseDateTime64InJodaSyntax(str[, format[, timezone]])

Аргументы

  • str — Строка, которую нужно разобрать.
  • format — Строка формата. Необязательно. yyyy-MM-dd HH:mm:ss, если не указано.
  • timezoneЧасовой пояс. Необязательно.

Возвращаемое значение(я)

Возвращает значение DateTime64, разобранное из входной строки в соответствии со строкой формата в стиле Joda. Точность возвращаемого значения равна количеству заполнителей S в строке формата (но не более 6).

parseDateTime64InJodaSyntaxOrZero

То же самое, что и для parseDateTime64InJodaSyntax, за исключением того, что он возвращает дату ноль, когда встречает формат даты, который не может быть обработан.

parseDateTime64InJodaSyntaxOrNull

То же самое, что и для parseDateTime64InJodaSyntax, за исключением того, что он возвращает NULL, когда встречает формат даты, который не может быть обработан.

parseDateTimeBestEffort

parseDateTime32BestEffort

Преобразует дату и время в представлении String в тип данных DateTime.

Функция разбирает ISO 8601, RFC 1123 - 5.2.14 RFC-822 Указания по дате и времени, форматы даты и времени ClickHouse и некоторые другие.

Синтаксис

parseDateTimeBestEffort(time_string [, time_zone])

Аргументы

  • time_string — Строка, содержащая дату и время для преобразования. String.
  • time_zone — Часовой пояс. Функция разбирает time_string в соответствии с часовым поясом. String.

Поддерживаемые нестандартные форматы

  • Строка, содержащая временную метку unix в 9..10 цифр.
  • Строка с компонентами даты и времени: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss и т.д.
  • Строка с датой, но без компонента времени: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY и т.д.
  • Строка с днем и временем: DD, DD hh, DD hh:mm. В этом случае MM заменяется на 01.
  • Строка, которая включает дату и время вместе с информацией о смещении часового пояса: YYYY-MM-DD hh:mm:ss ±h:mm и т.д. Например, 2020-12-12 17:36:00 -5:00.
  • временная метка syslog: Mmm dd hh:mm:ss. Например, Jun 9 14:20:32.

Для всех форматов с разделителем функция разбирает названия месяцев, выраженные полным названием или первыми тремя буквами названия месяца. Примеры: 24/DEC/18, 24-Dec-18, 01-September-2018. Если год не указан, он считается равным текущему году. Если получившаяся DateTime окажется в будущем (даже на секунду после текущего момента), то текущий год заменяется на предыдущий.

Возвращаемое значение

  • time_string, преобразованная в тип данных DateTime.

Примеры

Запрос:

SELECT parseDateTimeBestEffort('23/10/2020 12:12:57')
AS parseDateTimeBestEffort;

Результат:

┌─parseDateTimeBestEffort─┐
│     2020-10-23 12:12:57 │
└─────────────────────────┘

Запрос:

SELECT parseDateTimeBestEffort('Sat, 18 Aug 2018 07:22:16 GMT', 'Asia/Istanbul')
AS parseDateTimeBestEffort;

Результат:

┌─parseDateTimeBestEffort─┐
│     2018-08-18 10:22:16 │
└─────────────────────────┘

Запрос:

SELECT parseDateTimeBestEffort('1284101485')
AS parseDateTimeBestEffort;

Результат:

┌─parseDateTimeBestEffort─┐
│     2015-07-07 12:04:41 │
└─────────────────────────┘

Запрос:

SELECT parseDateTimeBestEffort('2018-10-23 10:12:12')
AS parseDateTimeBestEffort;

Результат:

┌─parseDateTimeBestEffort─┐
│     2018-10-23 10:12:12 │
└─────────────────────────┘

Запрос:

SELECT toYear(now()) AS year, parseDateTimeBestEffort('10 20:19');

Результат:

┌─year─┬─parseDateTimeBestEffort('10 20:19')─┐
│ 2023 │                 2023-01-10 20:19:00 │
└──────┴─────────────────────────────────────┘

Запрос:

WITH
    now() AS ts_now,
    formatDateTime(ts_around, '%b %e %T') AS syslog_arg
SELECT
    ts_now,
    syslog_arg,
    parseDateTimeBestEffort(syslog_arg)
FROM (SELECT arrayJoin([ts_now - 30, ts_now + 30]) AS ts_around);

Результат:

┌──────────────ts_now─┬─syslog_arg──────┬─parseDateTimeBestEffort(syslog_arg)─┐
│ 2023-06-30 23:59:30 │ Jun 30 23:59:00 │                 2023-06-30 23:59:00 │
│ 2023-06-30 23:59:30 │ Jul  1 00:00:00 │                 2022-07-01 00:00:00 │
└─────────────────────┴─────────────────┴─────────────────────────────────────┘

См. также

parseDateTimeBestEffortUS

Эта функция ведет себя как parseDateTimeBestEffort для ISO форматов даты, например, YYYY-MM-DD hh:mm:ss, и других форматов даты, где компоненты месяца и даты могут быть однозначно извлечены, например, YYYYMMDDhhmmss, YYYY-MM, DD hh или YYYY-MM-DD hh:mm:ss ±h:mm. Если компоненты месяца и даты не могут быть однозначно извлечены, например, MM/DD/YYYY, MM-DD-YYYY или MM-DD-YY, он предпочитает формат даты США вместо DD/MM/YYYY, DD-MM-YYYY или DD-MM-YY. В качестве исключения из последнего, если месяц больше 12 и меньше или равен 31, эта функция возвращается к поведению parseDateTimeBestEffort, например, 15/08/2020 разбирается как 2020-08-15.

parseDateTimeBestEffortOrNull

parseDateTime32BestEffortOrNull

То же самое, что и для parseDateTimeBestEffort, за исключением того, что он возвращает NULL, когда встречает формат даты, который не может быть обработан.

parseDateTimeBestEffortOrZero

parseDateTime32BestEffortOrZero

То же самое, что и для parseDateTimeBestEffort, за исключением того, что он возвращает дату ноль или время даты ноль, когда встречает формат даты, который не может быть обработан.

parseDateTimeBestEffortUSOrNull

То же самое, что и функция parseDateTimeBestEffortUS, за исключением того, что он возвращает NULL, когда встречает формат даты, который не может быть обработан.

parseDateTimeBestEffortUSOrZero

То же самое, что и функция parseDateTimeBestEffortUS, за исключением того, что он возвращает дату ноль (1970-01-01) или дату ноль с временем (1970-01-01 00:00:00), когда встречает формат даты, который не может быть обработан.

parseDateTime64BestEffort

То же самое, что и функция parseDateTimeBestEffort, но также разбирает миллисекунды и микросекунды и возвращает тип данных DateTime.

Синтаксис

parseDateTime64BestEffort(time_string [, precision [, time_zone]])

Аргументы

  • time_string — Строка, содержащая дату или дату с временем для преобразования. String.
  • precision — Необходимая точность. 3 — для миллисекунд, 6 — для микросекунд. По умолчанию — 3. Необязательно. UInt8.
  • time_zoneЧасовой пояс. Функция разбирает time_string в соответствии с часовым поясом. Необязательно. String.

Возвращаемое значение

  • time_string, преобразованная в тип данных DateTime.

Примеры

Запрос:

SELECT parseDateTime64BestEffort('2021-01-01') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2021-01-01 01:01:00.12346') AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2021-01-01 01:01:00.12346',6) AS a, toTypeName(a) AS t
UNION ALL
SELECT parseDateTime64BestEffort('2021-01-01 01:01:00.12346',3,'Asia/Istanbul') AS a, toTypeName(a) AS t
FORMAT PrettyCompactMonoBlock;

Результат:

┌──────────────────────────a─┬─t──────────────────────────────┐
│ 2021-01-01 01:01:00.123000 │ DateTime64(3)                  │
│ 2021-01-01 00:00:00.000000 │ DateTime64(3)                  │
│ 2021-01-01 01:01:00.123460 │ DateTime64(6)                  │
│ 2020-12-31 22:01:00.123000 │ DateTime64(3, 'Asia/Istanbul') │
└────────────────────────────┴────────────────────────────────┘

parseDateTime64BestEffortUS

То же самое, что и для parseDateTime64BestEffort, за исключением того, что эта функция предпочитает формат даты США (MM/DD/YYYY и т.д.) в случае неоднозначности.

parseDateTime64BestEffortOrNull

То же самое, что и для parseDateTime64BestEffort, за исключением того, что он возвращает NULL, когда встречает формат даты, который не может быть обработан.

parseDateTime64BestEffortOrZero

То же самое, что и для parseDateTime64BestEffort, за исключением того, что он возвращает дату ноль или время даты ноль, когда встречает формат даты, который не может быть обработан.

parseDateTime64BestEffortUSOrNull

То же самое, что и для parseDateTime64BestEffort, за исключением того, что эта функция предпочитает формат даты США (MM/DD/YYYY и т.д.) в случае неоднозначности и возвращает NULL, когда встречает формат даты, который не может быть обработан.

parseDateTime64BestEffortUSOrZero

То же самое, что и для parseDateTime64BestEffort, за исключением того, что эта функция предпочитает формат даты США (MM/DD/YYYY и т.д.) в случае неоднозначности и возвращает дату ноль или время даты ноль, когда встречает формат даты, который не может быть обработан.

toLowCardinality

Преобразует входной параметр в LowCardinality версию того же типа данных.

Чтобы преобразовать данные из типа данных LowCardinality, используйте функцию CAST. Например, CAST(x as String).

Синтаксис

toLowCardinality(expr)

Аргументы

Возвращаемые значения

  • Результат expr. LowCardinality того же типа, что и expr.

Пример

Запрос:

SELECT toLowCardinality('1');

Результат:

┌─toLowCardinality('1')─┐
│ 1                     │
└───────────────────────┘

toUnixTimestamp

Преобразует String, Date или DateTime в метку времени Unix (секунды с 1970-01-01 00:00:00 UTC) как UInt32.

Синтаксис

toUnixTimestamp(date, [timezone])

Аргументы

  • date: Значение для преобразования. Date или Date32 или DateTime или DateTime64 или String.
  • timezone: Необязательно. Часовой пояс, используемый для преобразования. Если не указано, используется часовой пояс сервера. String

Возвращаемое значение

Возвращает метку времени Unix. UInt32

Примеры

Пример использования

SELECT
'2017-11-05 08:07:47' AS dt_str,
toUnixTimestamp(dt_str) AS from_str,
toUnixTimestamp(dt_str, 'Asia/Tokyo') AS from_str_tokyo,
toUnixTimestamp(toDateTime(dt_str)) AS from_datetime,
toUnixTimestamp(toDateTime64(dt_str, 0)) AS from_datetime64,
toUnixTimestamp(toDate(dt_str)) AS from_date,
toUnixTimestamp(toDate32(dt_str)) AS from_date32
FORMAT Vertical;
Row 1:
──────
dt_str:          2017-11-05 08:07:47
from_str:        1509869267
from_str_tokyo:  1509836867
from_datetime:   1509869267
from_datetime64: 1509869267
from_date:       1509840000
from_date32:     1509840000

toUnixTimestamp64Second

Преобразует DateTime64 в значение Int64 с фиксированной точностью в секунду. Входное значение масштабируется вверх или вниз в зависимости от его точности.

примечание

Выходное значение является меткой времени в UTC, а не в часовом поясе DateTime64.

Синтаксис

toUnixTimestamp64Second(value)

Аргументы

  • value — Значение DateTime64 с любой точностью. DateTime64.

Возвращаемое значение

  • value, преобразованное в тип данных Int64. Int64.

Пример

Запрос:

WITH toDateTime64('2009-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Second(dt64);

Результат:

┌─toUnixTimestamp64Second(dt64)─┐
│                    1234567891 │
└───────────────────────────────┘

toUnixTimestamp64Milli

Преобразует DateTime64 в значение Int64 с фиксированной точностью в миллисекунду. Входное значение масштабируется вверх или вниз в зависимости от его точности.

примечание

Выходное значение является меткой времени в UTC, а не в часовом поясе DateTime64.

Синтаксис

toUnixTimestamp64Milli(value)

Аргументы

  • value — Значение DateTime64 с любой точностью. DateTime64.

Возвращаемое значение

  • value, преобразованное в тип данных Int64. Int64.

Пример

Запрос:

WITH toDateTime64('2009-02-13 23:31:31.011', 3, 'UTC') AS dt64
SELECT toUnixTimestamp64Milli(dt64);

Результат:

┌─toUnixTimestamp64Milli(dt64)─┐
│                1234567891011 │
└──────────────────────────────┘

toUnixTimestamp64Micro

Преобразует DateTime64 в значение Int64 с фиксированной точностью в микросекунду. Входное значение масштабируется вверх или вниз в зависимости от его точности.

примечание

Выходное значение является меткой времени в UTC, а не в часовом поясе DateTime64.

Синтаксис

toUnixTimestamp64Micro(value)

Аргументы

  • value — Значение DateTime64 с любой точностью. DateTime64.

Возвращаемое значение

  • value, преобразованное в тип данных Int64. Int64.

Пример

Запрос:

WITH toDateTime64('1970-01-15 06:56:07.891011', 6, 'UTC') AS dt64
SELECT toUnixTimestamp64Micro(dt64);

Результат:

┌─toUnixTimestamp64Micro(dt64)─┐
│                1234567891011 │
└──────────────────────────────┘

toUnixTimestamp64Nano

Преобразует DateTime64 в значение Int64 с фиксированной точностью в наносекунду. Входное значение масштабируется вверх или вниз в зависимости от его точности.

примечание

Выходное значение является меткой времени в UTC, а не в часовом поясе DateTime64.

Синтаксис

toUnixTimestamp64Nano(value)

Аргументы

  • value — Значение DateTime64 с любой точностью. DateTime64.

Возвращаемое значение

  • value, преобразованное в тип данных Int64. Int64.

Пример

Запрос:

WITH toDateTime64('1970-01-01 00:20:34.567891011', 9, 'UTC') AS dt64
SELECT toUnixTimestamp64Nano(dt64);

Результат:

┌─toUnixTimestamp64Nano(dt64)─┐
│               1234567891011 │
└─────────────────────────────┘

fromUnixTimestamp64Second

Преобразует Int64 в значение DateTime64 с фиксированной точностью в секунду и необязательным часовым поясом. Входное значение масштабируется вверх или вниз в зависимости от его точности.

примечание

Обратите внимание, что входное значение рассматривается как UTC метка времени, а не метка времени в данном (или подразумеваемом) часовом поясе.

Синтаксис

fromUnixTimestamp64Second(value[, timezone])

Аргументы

  • value — значение с любой точностью. Int64.
  • timezone — (опционально) название часового пояса результата. String.

Возвращаемое значение

  • value, преобразованное в DateTime64 с точностью 0. DateTime64.

Пример

Запрос:

WITH CAST(1733935988, 'Int64') AS i64
SELECT
    fromUnixTimestamp64Second(i64, 'UTC') AS x,
    toTypeName(x);

Результат:

┌───────────────────x─┬─toTypeName(x)────────┐
│ 2024-12-11 16:53:08 │ DateTime64(0, 'UTC') │
└─────────────────────┴──────────────────────┘

fromUnixTimestamp64Milli

Преобразует Int64 в значение DateTime64 с фиксированной точностью в миллисекунду и необязательным часовым поясом. Входное значение масштабируется вверх или вниз в зависимости от его точности.

примечание

Обратите внимание, что входное значение рассматривается как UTC метка времени, а не метка времени в данном (или подразумеваемом) часовом поясе.

Синтаксис

fromUnixTimestamp64Milli(value[, timezone])

Аргументы

  • value — значение с любой точностью. Int64.
  • timezone — (опционально) название часового пояса результата. String.

Возвращаемое значение

  • value, преобразованное в DateTime64 с точностью 3. DateTime64.

Пример

Запрос:

WITH CAST(1733935988123, 'Int64') AS i64
SELECT
    fromUnixTimestamp64Milli(i64, 'UTC') AS x,
    toTypeName(x);

Результат:

┌───────────────────────x─┬─toTypeName(x)────────┐
│ 2024-12-11 16:53:08.123 │ DateTime64(3, 'UTC') │
└─────────────────────────┴──────────────────────┘

fromUnixTimestamp64Micro

Преобразует Int64 в значение DateTime64 с фиксированной точностью в микросекунду и необязательным часовым поясом. Входное значение масштабируется вверх или вниз в зависимости от его точности.

примечание

Обратите внимание, что входное значение рассматривается как UTC метка времени, а не метка времени в данном (или подразумеваемом) часовом поясе.

Синтаксис

fromUnixTimestamp64Micro(value[, timezone])

Аргументы

  • value — значение с любой точностью. Int64.
  • timezone — (опционально) название часового пояса результата. String.

Возвращаемое значение

  • value, преобразованное в DateTime64 с точностью 6. DateTime64.

Пример

Запрос:

WITH CAST(1733935988123456, 'Int64') AS i64
SELECT
    fromUnixTimestamp64Micro(i64, 'UTC') AS x,
    toTypeName(x);

Результат:

┌──────────────────────────x─┬─toTypeName(x)────────┐
│ 2024-12-11 16:53:08.123456 │ DateTime64(6, 'UTC') │
└────────────────────────────┴──────────────────────┘

fromUnixTimestamp64Nano

Преобразует Int64 в значение DateTime64 с фиксированной точностью в наносекунду и необязательным часовым поясом. Входное значение масштабируется вверх или вниз в зависимости от его точности.

примечание

Обратите внимание, что входное значение рассматривается как UTC метка времени, а не метка времени в данном (или подразумеваемом) часовом поясе.

Синтаксис

fromUnixTimestamp64Nano(value[, timezone])

Аргументы

  • value — значение с любой точностью. Int64.
  • timezone — (опционально) название часового пояса результата. String.

Возвращаемое значение

  • value, преобразованное в DateTime64 с точностью 9. DateTime64.

Пример

Запрос:

WITH CAST(1733935988123456789, 'Int64') AS i64
SELECT
    fromUnixTimestamp64Nano(i64, 'UTC') AS x,
    toTypeName(x);

Результат:

┌─────────────────────────────x─┬─toTypeName(x)────────┐
│ 2024-12-11 16:53:08.123456789 │ DateTime64(9, 'UTC') │
└───────────────────────────────┴──────────────────────┘

formatRow

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

Синтаксис

formatRow(format, x, y, ...)

Аргументы

  • format — Текстовый формат. Например, CSV, TSV.
  • x,y, ... — Выражения.

Возвращаемое значение

  • Форматированная строка. (для текстовых форматов она обычно завершается символом новой строки).

Пример

Запрос:

SELECT formatRow('CSV', number, 'good')
FROM numbers(3);

Результат:

┌─formatRow('CSV', number, 'good')─┐
│ 0,"good"
                         │
│ 1,"good"
                         │
│ 2,"good"
                         │
└──────────────────────────────────┘

Примечание: Если формат содержит суффикс/префикс, он будет записан в каждой строке.

Пример

Запрос:

SELECT formatRow('CustomSeparated', number, 'good')
FROM numbers(3)
SETTINGS format_custom_result_before_delimiter='<prefix>\n', format_custom_result_after_delimiter='<suffix>'

Результат:

┌─formatRow('CustomSeparated', number, 'good')─┐
│ <prefix>
0    good
<suffix>                   │
│ <prefix>
1    good
<suffix>                   │
│ <prefix>
2    good
<suffix>                   │
└──────────────────────────────────────────────┘

Примечание: Поддерживаются только форматы на основе строк в этой функции.

formatRowNoNewline

Преобразует произвольные выражения в строку через данный формат. Отличается от formatRow тем, что эта функция обрезает последний \n, если он есть.

Синтаксис

formatRowNoNewline(format, x, y, ...)

Аргументы

  • format — Текстовый формат. Например, CSV, TSV.
  • x,y, ... — Выражения.

Возвращаемое значение

  • Форматированная строка.

Пример

Запрос:

SELECT formatRowNoNewline('CSV', number, 'good')
FROM numbers(3);

Результат:

┌─formatRowNoNewline('CSV', number, 'good')─┐
│ 0,"good"                                  │
│ 1,"good"                                  │
│ 2,"good"                                  │
└───────────────────────────────────────────┘