TEXT_TO_NUMERIC_ALT - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouveaux Python UDFs à compter du 1er novembre 2025. Si vous souhaitez utiliser Python UDFs, créez la version UDFs antérieure à cette date. Le Python existant UDFs continuera à fonctionner normalement. Pour plus d'informations, consultez le billet de blog.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

TEXT_TO_NUMERIC_ALT

TEXT_TO_NUMERIC_ALT effectue une opération de conversion de style Teradata pour convertir une chaîne de caractères en un format de données numériques.

Syntaxe

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

Arguments

expression

Expression qui correspond à une ou plusieurs valeurs CHAR ou VARCHAR, par exemple, un nom de colonne ou un littéral. La conversion de valeurs null renvoie des valeurs null. Les chaînes vides sont converties en 0.

format

Littéral de chaîne qui définit le format de l’expression en entrée. Pour plus d'informations, consultez Caractères de formatage de type Teradata pour les données numériques.

precision

Nombre de chiffres dans le résultat numérique. La valeur par défaut est 38.

échelle

Nombre de chiffres à droite de la virgule décimale dans le résultat numérique. La valeur par défaut est 0.

Type de retour

TEXT_TO_NUMERIC_ALT renvoie un nombre DECIMAL.

Amazon Redshift renvoie une erreur si la conversion dans la phrase format que vous spécifiez n’a pas réussi.

Amazon Redshift convertit la chaîne d’expression en entrée en type numérique avec la précision la plus élevée que vous spécifiez pour ce type dans l’option precision. Si la longueur de la valeur numérique dépasse la valeur que vous spécifiez pour precision, Amazon Redshift arrondit la valeur numérique en appliquant les règles suivantes :

  • Si la longueur du résultat de la conversion dépasse la longueur que vous spécifiez dans la phrase format, Amazon Redshift renvoie une erreur.

  • Si le résultat est converti en une valeur numérique, le résultat est arrondi à la valeur la plus proche. Si la partie après la virgule se trouve exactement à mi-chemin entre les résultats supérieur et inférieur de la conversion, le résultat est arrondi à la valeur pair la plus proche.

Exemples

L’exemple suivant convertit la chaîne d’expression en entrée 1.5 en valeur numérique 2. Parce que l’instruction ne spécifie pas d’échelle, l’échelle par défaut est 0 et le résultat de la conversion n’inclut pas les chiffres après la virgule. Etant donné que .5 est à mi-chemin entre 1 et 2, le résultat de la conversion est arrondi à la valeur pair de 2.

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

L’exemple suivant convertit la chaîne d’expression en entrée 2.51 en valeur numérique 3. Parce que l’instruction ne spécifie pas d’échelle, la valeur d’échelle par défaut est 0 et le résultat de la conversion n’inclut pas les chiffres après la virgule. Étant donné que .51 est plus proche de 3 que 2, le résultat de la conversion est arrondi à la valeur de 3.

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

L’exemple suivant convertit la chaîne d’expression en entrée 123.52501 avec une précision de 10 et une échelle de 2 en valeur numérique 123,53.

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

L'exemple suivant convertit la chaîne d'expression d'entrée « 123 {» avec la phrase de format « 999S » en 1230 numérique. Le caractère S indique une « Signed Zoned Decimal ». Pour de plus amples informations, veuillez consulter Caractères de formatage de type Teradata pour les données numériques.

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

L'exemple suivant convertit la chaîne d'expression d'entrée « USD123 » avec la phrase de format « C9 (I) » en 124 numérique. Consultez Caractères de formatage de type Teradata pour les données numériques.

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

L’exemple suivant spécifie une colonne de table comme étant l’expression en entrée.

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

Voici la définition de la table et l’instruction insert pour cet exemple.

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