MySQL 8.0 参考手册  / 第24章分区  / 24.6 分区的约束和限制  /  19.6.3 与函数相关的分区限制

19.6.3 与函数相关的分区限制

本节讨论 MySQL 分区中与分区表达式中使用的函数特别相关的限制。

分区表达式中只允许使用以下列表中显示的 MySQL 函数:

在 MySQL 5.6 中,范围优化可用于TO_DAYS()TO_SECONDS()YEAR()函数。此外,从 MySQL 5.6.3 开始, UNIX_TIMESTAMP()在分区表达式中被视为单调的。有关详细信息,请参阅 第 19.4 节,“分区修剪”

天花板()和地板()。  这些函数中的每一个仅在传递给精确数字类型的参数时才返回整数,例如INTor 类型 之一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

带有 WEEK 说明符的 EXTRACT() 函数。 EXTRACT()当用作 时,函数 返回的值 取决于 系统变量的值。为此,从 MySQL 5.6.2 开始, 当指定单位为 . 时,不再允许作为分区函数。(漏洞 #54483) EXTRACT(WEEK FROM col)default_week_formatEXTRACT()WEEK

有关这些函数的返回类型的更多信息,以及第 11.1 节,“数字数据类型” , 请参见第 12.6.2 节,“数学函数” 。