本节讨论了 MySQL 分区中与分区表达式中使用的函数相关的限制。
只有以下列表中的 MySQL 函数允许在分区表达式中使用:
在 MySQL 8.3 中,对 TO_DAYS()
、TO_SECONDS()
、YEAR()
和 UNIX_TIMESTAMP()
函数支持分区修剪。见 第 26.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
带 WEEK specifier 的 EXTRACT() 函数。 当 EXTRACT()
函数用作 EXTRACT(WEEK FROM
时,返回的值取决于 col
)default_week_format
系统变量的值。因此,当 EXTRACT()
指定单位为 WEEK
时,不允许其作为分区函数。(Bug #54483)
请参阅 第 14.6.2 节,“数学函数”,以获取这些函数的返回类型的更多信息,以及 第 13.1 节,“数字数据类型”。