

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# SIGN 函數
<a name="r_SIGN"></a>

 SIGN 函數傳回數字的符號 (正或負)。如果引數是正的，SIGN 函數的結果會是 `1`，如果引數是負的則結果為 `-1`，如果引數是 `0` 則結果為 `0`。

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

```
SIGN(number)
```

## 引數
<a name="r_SIGN-argument"></a>

 *number*   
數字或評估為數字的表達式。它可以是 `DECIMAL`、`FLOAT8` 或 `SUPER` 類型。Amazon Redshift 可以根據隱含轉換規則轉換其他資料類型。

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

SIGN 傳回與輸入引數相同的數值資料類型。如果輸入是 `DECIMAL`，則輸出為 `DECIMAL(1,0)`。

當輸入為 `SUPER` 類型時，輸出會保留與輸入相同的動態類型，而靜態類型仍然是 `SUPER` 類型。當 `SUPER` 的動態類型不是數字時，Amazon Redshift 會傳回 `NULL`。

## 範例
<a name="r_SIGN-examples"></a>

下列範例顯示表格 t2 中的 `d` 欄具有 `DOUBLE PRECISION` 類型，因為輸入是 `DOUBLE PRECISION`，而表格 t2 中的 `n` 欄具有 `NUMERIC(1,0)` 輸出，因為輸入是 `NUMERIC`。

```
CREATE TABLE t1(d DOUBLE PRECISION, n NUMERIC(12, 2));
INSERT INTO t1 VALUES (4.25, 4.25), (-4.25, -4.25);
CREATE TABLE t2 AS SELECT SIGN(d) AS d, SIGN(n) AS n FROM t1;
SELECT table_name, column_name, data_type FROM SVV_REDSHIFT_COLUMNS WHERE table_name='t1' OR table_name='t2';
 
+------------+-------------+-----------------------+
| table_name | column_name |       data_type       |
+------------+-------------+-----------------------+
| t1         | d           | double precision      |
| t1         | n           | numeric(12,2)         |
| t2         | d           | double precision      |
| t2         | n           | numeric(1,0)          |
| t1         | col1        | character varying(20) |
+------------+-------------+-----------------------+
```

下列範例使用 TICKIT 範例資料庫。如需詳細資訊，請參閱[範本資料庫](c_sampledb.md)。

若要確定從 SALES 表中為給定交易支付的佣金的符號，請使用以下範例。

```
SELECT commission, SIGN(commission)
FROM sales WHERE salesid=10000;

+------------+------+
| commission | sign |
+------------+------+
|      28.05 |    1 |
+------------+------+
```