O Amazon Redshift não permitirá mais a criação de funções definidas pelo usuário (UDFs) do Python a partir de 1.º de novembro de 2025. Se quiser usar UDFs do Python, você deve criá-las antes dessa data. As UDFs do Python existentes continuarão a funcionar normalmente. Para ter mais informações, consulte a publicação de blog
Função SIGN
A função SIGN retorna o sinal (positivo ou negativo) de um número. O resultado da função SIGN será 1 se o argumento for positivo, -1 se o argumento for negativo ou 0 se o argumento for 0.
Sintaxe
SIGN(number)
Argumento
- Número da
-
Número ou expressão que avalia para um número. Ele pode ser tipo
DECIMAL,FLOAT8ouSUPER. O Amazon Redshift pode converter outros tipos de dados de acordo com as regras de conversão implícitas.
Tipo de retorno
SIGN retorna o mesmo tipo de dados numéricos que o argumento de entrada. Se a entrada for DECIMAL, a saída será DECIMAL(1,0).
Quando a entrada é do tipo SUPER, a saída mantém o mesmo tipo dinâmico que a entrada enquanto o tipo estático permanece o tipo SUPER. Quando o tipo dinâmico de SUPER não é um número, o Amazon Redshift retorna um NULL.
Exemplos
O exemplo a seguir mostra que a coluna d na tabela t2 tem DOUBLE PRECISION como seu tipo, já que a entrada é DOUBLE PRECISION e que a coluna n na tabela t2 tem NUMERIC(1,0) como saída, visto que a entrada é 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) | +------------+-------------+-----------------------+
Os exemplos a seguir usa o banco de dados de exemplo de TICKIT. Para obter mais informações, consulte Banco de dados de exemplo.
Para determinar o sinal da comissão paga por determinada transação na tabela SALES, use o exemplo a seguir.
SELECT commission, SIGN(commission) FROM sales WHERE salesid=10000;+------------+------+ | commission | sign | +------------+------+ | 28.05 | 1 | +------------+------+