

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# MOD 函數
<a name="MOD"></a>

傳回兩個數字的餘數，也稱為*模數*運算。為了計算結果，第一個參數除以第二個參數。

## 語法
<a name="MOD-synopsis"></a>

```
MOD(number1, number2)
```

## 引數
<a name="MOD-arguments"></a>

 *number1*   
第一個輸入參數是 INTEGER、SMALLINT、BIGINT 或 DECIMAL 數字。如果任一參數為 DECIMAL 類型，則另一個參數也必須為 DECIMAL 類型。如果任一參數為 INTEGER，則另一個參數可以是 INTEGER、SMALLINT 或 BIGINT。兩個參數也都可以是 SMALLINT 或 BIGINT，但如果一個參數是 BIGINT，則另一個參數不能是 SMALLINT。

 *number2*   
第二個參數是 INTEGER、SMALLINT、BIGINT 或 DECIMAL 數字。相同的資料類型規則適用於 *number2* 與 *number1*。

## 傳回類型
<a name="MOD-return-type"></a>

有效傳回值為 DECIMAL、INT、SMALLINT 及 BIGINT.。如果兩個輸入參數都是相同類型，則 MOD 函數的傳回類型與輸入參數的數值類型相同。不過，如果任一輸入參數為 INTEGER，則傳回類型也會是 INTEGER。

## 使用須知
<a name="MOD-usage-notes"></a>

您可以使用 *%* 做為模數運算子。

## 範例
<a name="MOD-example"></a>

下列範例會在數字除以另一個數字時傳回餘數：

```
SELECT MOD(10, 4);
               
 mod
------
 2
```

下列範例會傳回十進位結果：

```
SELECT MOD(10.5, 4);
               
 mod
------
 2.5
```

您可以轉換參數值：

```
SELECT MOD(CAST(16.4 as integer), 5);
               
 mod
------
 1
```

透過將第一個參數除以 2 來檢查它是否為 ：

```
SELECT mod(5,2) = 0 as is_even;
               
 is_even
--------
 false
```

您可以使用 *%* 做為模數運算子：

```
SELECT 11 % 4 as remainder;
               
 remainder
-----------
 3
```

下列範例傳回 CATEGORY 資料表中奇數編號類別的資訊：

```
select catid, catname
from category
where mod(catid,2)=1
order by 1,2;

 catid |  catname
-------+-----------
     1 | MLB
     3 | NFL
     5 | MLS
     7 | Plays
     9 | Pop
    11 | Classical

(6 rows)
```