22.6.3 Ограничения разбиения, относящиеся к функциям
В этом разделе рассматриваются ограничения разбиения MySQL, относящиеся к функциям, используемым в выражениях разбиения.
В выражениях разбиения разрешены только функции MySQL, показанные в следующем списке:
CEILING()(см. CEILING() и FLOOR())FLOOR()(см. CEILING() и FLOOR())UNIX_TIMESTAMP()(с столбцами типаTIMESTAMP)
В MySQL 5.7 поддержка обрезки разбиения реализована для функций TO_DAYS(), TO_SECONDS(), YEAR() и UNIX_TIMESTAMP(). Дополнительную информацию см. в разделе 22.4 «Обрезка разбиения».
CEILING() и FLOOR(). Каждая из этих функций возвращает целое число только в том случае, если ей передается аргумент точного числового типа, например, один из типов INT или DECIMAL. Это означает, например, что следующая команда CREATE
TABLE завершается ошибкой, как показано здесь:
mysql> CREATE TABLE t (c FLOAT) PARTITION BY LIST( FLOOR(c) )(
-> PARTITION p0 VALUES IN (1,3,5),
-> PARTITION p1 VALUES IN (2,4,6)
-> );
ERROR 1490 (HY000): The PARTITION function returns the wrong type
Функция EXTRACT() с указанием WEEK. Значение, возвращаемое функцией EXTRACT(), когда она используется как EXTRACT(WEEK FROM
, зависит от значения системной переменной col)default_week_format. По этой причине EXTRACT() не допускается в качестве функции разбиения, когда она указывает единицу как WEEK. (Ошибка #54483)
Дополнительную информацию о типах возвращаемых значений этих функций, а также о числовых типах данных см. в разделе 12.6.2 «Математические функции» и разделе 11.1 «Числовые типы данных».
© 2025 Oracle
Licensed under the GPLv2 License.