SIGN 関数
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
を返します。
例
次の例は、入力が DOUBLE PRECISION
であるため、テーブル t2 の列 d
の型が DOUBLE PRECISION
であり、入力が NUMERIC
であるため、テーブル t2 の列 n
の出力は NUMERIC(1,0)
であることを示しています。
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 |
+------------+------+