Función SIGN - Amazon Redshift

Función SIGN

La función SIGN devuelve el signo (positivo o negativo) de un número. El resultado de la función SIGN es 1 si el argumento es positivo, -1 si el argumento es negativo o 0 si el argumento es 0.

Sintaxis

SIGN(number)

Argumento

número

Número o expresión que toma el valor de un número. Puede ser un tipo DECIMAL, FLOAT8 o SUPER. Amazon Redshift puede convertir otros tipos de datos de acuerdo con las reglas de conversión implícitas.

Tipo de retorno

SIGN devuelve el mismo tipo de datos numérico como el argumento de entrada. Si la entrada es DECIMAL, el resultado es DECIMAL(1,0).

Cuando la entrada es del tipo SUPER, la salida conserva el mismo tipo dinámico que la entrada mientras que el tipo estático sigue siendo el tipo SUPER. Cuando el tipo dinámico de SUPER no es un número, Amazon Redshift devuelve NULL.

Ejemplos

En el siguiente ejemplo, se muestra que la columna d en la tabla t2 tiene DOUBLE PRECISION como su tipo, ya que la entrada es DOUBLE PRECISION y esa columna n en la tabla t2 tiene NUMERIC(1,0) como la salida ya que la entrada es 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) | +------------+-------------+-----------------------+

El siguiente ejemplo utiliza la base de datos de ejemplo TICKIT. Para obtener más información, consulte Base de datos de muestra.

Para determinar el signo de la comisión pagada por una transacción determinada a partir de la tabla SALES, utilice el siguiente ejemplo.

SELECT commission, SIGN(commission) FROM sales WHERE salesid=10000; +------------+------+ | commission | sign | +------------+------+ | 28.05 | 1 | +------------+------+