Функции приведения типов

Приведение типов включает три основных действия: преобразование, переинтерпретацию и продвижение.

  • Преобразование. Это процесс изменения типа данных значения на другой тип данных. Это требует дополнительных вычислений и выполняется исключительно функцией TO_STRING().
  • Переинтерпретация. Это означает обработку двоичных данных, представляющих значение, как если бы они были другого типа данных, без фактического изменения исходных данных. Это выполняется функцией SINT(), не требует дополнительных вычислений; вместо этого просто переинтерпретирует существующие данные.
  • Продвижение. Это процесс преобразования значения в "больший" или более точный тип данных. Это также не требует дополнительных вычислений; просто запрашивает у аргумента выдачу значения другого типа. Только JSON-поля и несколько других функций могут продвигать свои значения к целым числам. Если аргумент не может выдать значение другого типа, продвижение завершится неудачей. Например, функция TIMEDIFF() обычно возвращает строку, но может также возвращать число. Поэтому BIGINT(TIMEDIFF(1,2)) выполнится успешно, заставляя TIMEDIFF() выдавать целочисленное значение. Напротив, DATE_FORMAT() возвращает только строки и не может выдать число, значит BIGINT(DATE_FORMAT(...)) завершится неудачей.

BIGINT()

Эта функция продвигает целочисленный аргумент к 64-битному типу, оставляя аргументы с плавающей точкой без изменений. Она предназначена для обеспечения вычисления определённых выражений (например, a*b) в 64-битном режиме, даже если все аргументы 32-битные.

DOUBLE()

Функция DOUBLE() продвигает свой аргумент к типу с плавающей точкой. Это предназначено для принудительного вычисления числовых JSON-полей.

INTEGER()

Функция INTEGER() продвигает свой аргумент к 64-битному знаковому типу. Это предназначено для принудительного вычисления числовых JSON-полей.

TO_STRING()

Эта функция принудительно преобразует свой аргумент к строковому типу.

UINT()

Функция UINT() продвигает свой аргумент к 32-битному беззнаковому целочисленному типу.

UINT64()

Функция UINT64() продвигает свой аргумент к 64-битному беззнаковому целочисленному типу.

SINT()

Функция SINT() принудительно переинтерпретирует свой 32-битный беззнаковый целочисленный аргумент как знаковый и расширяет его до 64-битного типа (поскольку 32-битный тип беззнаковый). Например, выражение 1-2 обычно вычисляется как 4294967295, но SINT(1-2) вычисляется как -1.

Last modified: August 28, 2025