SIGN 函数 - Amazon Redshift

SIGN 函数

SIGN 函数返回数字的符号(正或负)。如果参数为正,则 SIGN 函数的结果为 1;如果参数为负,则结果为 -1;或者,如果参数为 0,则结果为 0

语法

SIGN(number)

参数

number

数字或计算结果为数字的表达式。它可以是 DECIMALFLOAT8、或 SUPER 类型。Amazon Redshift 可根据隐式转换规则转换其他数据类型。

返回类型

SIGN 返回与输入参数相同的数值数据类型。如果输入为 DECIMAL,则输出为 DECIMAL(1,0)

当输入为 SUPER 类型时,输出将保留与输入相同的动态类型,而静态类型仍保留 SUPER 类型。当 SUPER 的动态类型不是数值时,Amazon Redshift 将返回 NULL

示例

以下示例显示,由于输入是 DOUBLE PRECISION,表 t2 中的列 dDOUBLE PRECISION 作为其类型;而由于输入是 NUMERIC,表 t2 中的列 nNUMERIC(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 | +------------+------+