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