Fonction try_to_number

S’applique à :coche marquée oui Databricks SQL coche marquée oui Databricks Runtime 11.3 LTS et versions ultérieures

Retourne expr casté en DECIMAL à l’aide de la mise en forme fmt, ou NULL si expr ne correspond pas au format.

Syntaxe

try_to_number(expr, fmt)

fmt
  { ' [ MI | S ] [ L | $ ]
      [ 0 | 9 | G | , ] [...]
      [ . | D ]
      [ 0 | 9 ] [...]
      [ L | $ ] [ PR | MI | S ] ' }

Arguments

  • expr : expression de type chaîne (STRING) représentant un nombre. expr peut inclure des espaces de début ou de fin.
  • fmt : littéral STRING, spécifiant le format attendu de expr.

Retours

DECIMAL(p, s) où p est le nombre total de chiffres (0 ou 9) et s est le nombre de chiffres après la virgule décimale, ou 0 s’il n’y a pas de chiffre après la virgule décimale.

fmt peut contenir les éléments suivants (ne respectant pas la casse) :

  • 0 ou 9

    Spécifie un chiffre attendu entre 0 et 9. Un 0 à gauche des décimales indique que expr doit avoir au moins autant de chiffres. Un 9 initial indique que expr peut omettre ces chiffres.

    expr ne doit pas être supérieur au nombre de chiffres à gauche de la virgule décimale autorisés.

    Les chiffres à droite de la décimale indiquent le nombre maximal de chiffres que expr peut avoir à droite de la virgule décimale spécifié par fmt.

  • . ou D

    Spécifie la position de la virgule décimale.

    expr n’a pas besoin d’inclure une virgule décimale.

  • , ou G

    Spécifie la position du séparateur de regroupement (milliers) ,. Il doit y avoir un 0 ou 9 à gauche et à droite de chaque séparateur de regroupement. expr doit correspondre au séparateur de regroupement correspondant à la taille du nombre.

  • L ou $

    Spécifie l’emplacement du signe monétaire $. Ce caractère ne peut être spécifié qu’une seule fois.

  • S ou MI

    Spécifie la position d’un signe facultatif « + » ou « - » pour S, et « - » uniquement pour MI. Cette directive ne peut être spécifiée qu’une seule fois.

  • PR

    Spécifie que expr indique un nombre négatif avec des crochets englobants (<1>).

Si expr contient des caractères autres que 0 à 9, ou ceux autorisés dans fmt, NULL est retourné.

Pour une sémantique stricte, utilisez to_number().

Exemples

-- The format expects:
--  * an optional sign at the beginning,
--  * followed by a dollar sign,
--  * followed by a number between 3 and 6 digits long,
--  * thousands separators,
--  * up to two dight beyond the decimal point.
> SELECT try_to_number('-$12,345.67', 'S$999,099.99');
 -12345.67

-- Plus is optional, and so are fractional digits.
> SELECT try_to_number('$345', 'S$999,099.99');
 345.00

-- The format requires at least three digits.
> SELECT to_number('$45', 'S$999,099.99');
 Error: Invalid number

-- The format requires at least three digits.
> SELECT try_to_number('$45', 'S$999,099.99');
 NULL

-- The format requires at least three digits
> SELECT try_to_number('$045', 'S$999,099.99');
 45.00

-- Using brackets to denote negative values
> SELECT try_to_number('<1234>', '999999PR');
 -1234