MySQL 8.4 參考手冊  /  ...  /  關於函數的分割區限制

26.6.3 關於函數的分割區限制

本節討論 MySQL 分割區中,特別是與分割區運算式中使用的函數相關的限制。

分割區運算式中只允許使用以下清單中顯示的 MySQL 函數

在 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 節,「數學函數」