本節討論 MySQL 分割區中,特別是與分割區運算式中使用的函數相關的限制。
分割區運算式中只允許使用以下清單中顯示的 MySQL 函數
CEILING()
(請參閱 CEILING() 和 FLOOR())FLOOR()
(請參閱 CEILING() 和 FLOOR())UNIX_TIMESTAMP()
(使用TIMESTAMP
資料行)
在 MySQL 8.4 中,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 指定器的 EXTRACT() 函數。 EXTRACT()
函數傳回的值 (當作為 EXTRACT(WEEK FROM
使用時) 取決於 col
)default_week_format
系統變數的值。因此,當 EXTRACT()
將單位指定為 WEEK
時,不允許將其作為分割區函數使用。(錯誤 #54483)
如需這些函數的傳回類型以及 第 13.1 節,「數值資料類型」的更多資訊,請參閱 第 14.6.2 節,「數學函數」。