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 | +------------+------+