TEXT_TO_NUMERIC_ALT - Amazon Redshift

TEXT_TO_NUMERIC_ALT

TEXT_TO_NUMERIC_ALT realiza una operación de conversión de estilo Teradata para convertir una cadena de caracteres a un formato de datos numérico.

Sintaxis

TEXT_TO_NUMERIC_ALT (expression [, 'format'] [, precision, scale])

Argumentos

expresión

Una expresión que toma uno o más valores CHAR o VARCHAR, como un nombre de columna o un literal. La conversión de valores nulos devuelve valores nulos. Las cadenas en blanco o vacías se convierten a 0.

formato

Un literal de cadena que define el formato de la expresión de entrada. Para obtener más información, consulte Caracteres de formato de estilo Teradata para datos numéricos.

precisión

La cantidad de dígitos en el resultado numérico. El valor predeterminado es 38.

scale

La cantidad de dígitos a la derecha de la coma decimal en el resultado numérico. El valor predeterminado es 0.

Tipo de retorno

TEXT_TO_NUMERIC_ALT devuelve un número DECIMAL.

Amazon Redshift devuelve un error si la conversión a la frase de formato que se especifica no consigue resultados correctos.

Amazon Redshift convierte la cadena de expresión de entrada al tipo numérico con la mayor precisión que especifique para ese tipo en la opción de precisión. Si la longitud del valor numérico supera el valor especificado para la precisión, Amazon Redshift redondea el valor numérico de acuerdo con las siguientes reglas:

  • Si la longitud del resultado de conversión excede la longitud especificada en la frase de formato, Amazon Redshift devuelve un error.

  • Si el resultado se convierte en un valor numérico, se redondea al valor más cercano. Si la parte de fracción está exactamente a la mitad del resultado de la conversión superior y la inferior, el resultado se redondea al valor par más cercano.

Ejemplos

En el siguiente ejemplo, se convierte la cadena de expresión de entrada '1,5' al valor numérico '2'. Debido a que la instrucción no especifica la escala, la escala adopta el valor predeterminado 0 y el resultado de la conversión no incluye el resultado de una fracción. Como ,5 está a la mitad de 1 y 2, el resultado de la conversión se redondea al valor par de 2.

select text_to_numeric_alt('1.5');
text_to_numeric_alt --------------------- 2

En el siguiente ejemplo, se convierte la cadena de expresión de entrada '2,51' al valor numérico 3. Debido a que la instrucción no especifica un valor de escala, la escala adopta el valor predeterminado 0 y el resultado de la conversión no incluye el resultado de una fracción. Como ,51 está más cerca de 3 que de 2, el resultado de la conversión se redondea al valor de 3.

select text_to_numeric_alt('2.51');
text_to_numeric_alt --------------------- 3

En el siguiente ejemplo, se convierte la cadena de expresión de entrada 123,52501 con una precisión de 10 y una escala de 2 al valor numérico 123,53.

select text_to_numeric_alt('123.52501', 10, 2);
text_to_numeric_alt --------------------- 123.53

En el siguiente ejemplo, se convierte la cadena de expresión de entrada "123{" con la frase de formato "999S" al valor numérico 1230. El carácter S indica un decimal zonificado firmado. Para obtener más información, consulte Caracteres de formato de estilo Teradata para datos numéricos.

select text_to_numeric_alt('123{', '999S');
text_to_int_alt ---------- 1230

En el siguiente ejemplo, se convierte la cadena de expresión de entrada "USD123" con la frase de formato "C9(I)" al valor numérico 124. Consulte Caracteres de formato de estilo Teradata para datos numéricos.

select text_to_numeric_alt('USD123.9', 'C9(I)');
text_to_numeric_alt ---------- 124

En el siguiente ejemplo, se especifica la columna de una tabla como la expresión 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 continuación, se presenta la definición de la tabla y la instrucción de inserción para este ejemplo.

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');