TEXT_TO_NUMERIC_ALT
TEXT_TO_NUMERIC_ALT executa uma operação de conversão no estilo Teradata para converter uma string de caracteres em um formato de dados numérico.
Sintaxe
TEXT_TO_NUMERIC_ALT (expression [, 'format'] [, precision, scale])
Argumentos
- expressão
-
Uma expressão que avalia um ou mais valores CHAR ou VARCHAR, como um nome de coluna ou literal. A conversão de valores nulos retorna nulos. As cadeias em branco ou vazias são convertidas em 0.
- format
-
Um literal de string que define o formato da expressão de entrada. Para obter mais informações, consulte Caracteres de formatação de estilo Teradata para dados numéricos.
- precisão
-
O número de dígitos no resultado numérico. O padrão é 38.
- escala
-
O número de dígitos à direita do separador decimal no resultado numérico. O padrão é 0.
Tipo de retorno
TEXT_TO_NUMERIC_ALT retorna um número DECIMAL.
O Amazon Redshift retorna um erro se a conversão para a frase de format que você especificar não for bem-sucedida.
O Amazon Redshift lança a string da expressão de entrada para o tipo numérico com a precisão mais alta que você especificar para esse tipo na opção precisão. Se o comprimento do valor numérico exceder o valor especificado para precisão, o Amazon Redshift arredonda o valor numérico de acordo com as seguintes regras:
-
Se o comprimento do resultado de conversão exceder o comprimento especificado na frase de format, o Amazon Redshift retorna um erro.
-
Se o resultado for convertido em um valor numérico, o resultado será arredondado para o valor mais próximo. Se a porção fracionada estiver exatamente a meio caminho entre o resultado de elenco superior e inferior, o resultado será arredondado para o valor par mais próximo.
Exemplos
O exemplo a seguir converte a string da expressão de entrada “1.5” para o valor numérico “2”. Como a declaração não especifica a escala, o padrão da escala é 0 e o resultado da conversão não inclui um resultado de fração. Como .5 está no meio do caminho entre 1 e 2, o resultado da conversão é arredondado para o valor par de 2.
select text_to_numeric_alt('1.5');
text_to_numeric_alt --------------------- 2
O exemplo a seguir converte a string da expressão de entrada '2.51' para o valor numérico 3. Como a declaração não especifica o valor da escala, o padrão da escala é 0 e o resultado da conversão não inclui um resultado de fração. Como 0,51 está mais próximo de 3 do que 2, o resultado da conversão é arredondado para o valor de 3.
select text_to_numeric_alt('2.51');
text_to_numeric_alt --------------------- 3
O exemplo a seguir converte a string da expressão de entrada 123.52501 com uma precisão de 10 e uma escala de 2 para o valor numérico 123,53.
select text_to_numeric_alt('123.52501', 10, 2);
text_to_numeric_alt --------------------- 123.53
O exemplo a seguir converte a string da expressão de entrada “123{“ com a frase de formato “999S” no numérico 1230. O caractere S indica um Decimal com zona assinada. Para ter mais informações, consulte Caracteres de formatação de estilo Teradata para dados numéricos.
select text_to_numeric_alt('123{', '999S');
text_to_int_alt ---------- 1230
O exemplo a seguir converte a string da expressão de entrada “USD123“ com a frase de formato “C9(I)” no numérico 124. Consulte Caracteres de formatação de estilo Teradata para dados numéricos.
select text_to_numeric_alt('USD123.9', 'C9(I)');
text_to_numeric_alt ---------- 124
O exemplo a seguir especifica uma coluna de tabela como a expressão de entrada.
select text_to_numeric_alt(a), text_to_numeric_alt(b) from t_text2numeric order by 1;
text_to_numeric_alt | text_to_numeric_alt -----------------------------------------+----------------------------------------- -99999999999999999999999999999999999999 | -99999999999999999999999999999999999999 -12300 | -12300 123 | 123 123 | 123 99999999999999999999999999999999999999 | 99999999999999999999999999999999999999
A seguir está a definição da tabela e a instrução de inserção para este exemplo.
create table t_text2numeric (a varchar(200), b char(200));
insert into t_text2numeric values ('123', '123'), ('+123.456', '+123.456'), ('-' || repeat('9', 38), '-' || repeat('9', 38)), (repeat('9', 38) || '+', repeat('9', 38) || '+'), ('-123E2', '-123E2');