本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SIGN 函數傳回數字的符號 (正或負)。如果引數是正的,SIGN 函數的結果會是 1
,如果引數是負的則結果為 -1
,如果引數是 0
則結果為 0
。
語法
SIGN(number)
引數
- number
-
數字或評估為數字的表達式。它可以是
DECIMAL
、FLOAT8
或SUPER
類型。Amazon Redshift 可以根據隱含轉換規則轉換其他資料類型。
傳回類型
SIGN 傳回與輸入引數相同的數值資料類型。如果輸入是 DECIMAL
,則輸出為 DECIMAL(1,0)
。
當輸入為 SUPER
類型時,輸出會保留與輸入相同的動態類型,而靜態類型仍然是 SUPER
類型。當 SUPER
的動態類型不是數字時,Amazon Redshift 會傳回 NULL
。
範例
下列範例顯示表格 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 範例資料庫。如需詳細資訊,請參閱範本資料庫。
若要確定從 SALES 表中為給定交易支付的佣金的符號,請使用以下範例。
SELECT commission, SIGN(commission)
FROM sales WHERE salesid=10000;
+------------+------+
| commission | sign |
+------------+------+
| 28.05 | 1 |
+------------+------+