Fonction to_number
S’applique à : Databricks SQL Databricks Runtime 11.3 LTS et versions ultérieures
Retourne expr
casté en DECIMAL à l’aide de la mise en forme fmt
.
Syntaxe
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 deexpr
.
Retours
Une valeur DECIMAL(p, s) wherep
correspond au 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 en a aucun.
fmt
peut contenir les éléments suivants (ne respectant pas la casse) :
0
ou9
Spécifie un chiffre attendu entre
0
et9
. Un0
à gauche des décimales indique queexpr
doit avoir au moins autant de chiffres. Un9
initial indique queexpr
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é parfmt
..
ouD
Spécifie la position de la virgule décimale.
expr
n’a pas besoin d’inclure une virgule décimale.,
ouG
Spécifie la position du séparateur de regroupement (milliers)
,
. Il doit y avoir un0
ou9
à 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
ouMI
Spécifie la position d’un signe facultatif « + » ou « - » pour
S
, et « - » uniquement pourMI
. Cette directive ne peut être spécifiée qu’une seule fois.PR
Autorisé uniquement à la fin de la chaîne de format ; 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 des caractères autorisés dans fmt
, une erreur est retournée.
Pour retourner NULL
au lieu d’une erreur pour un expr
non valide, utilisez try_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 to_number('-$12,345.67', 'S$999,099.99');
-12345.67
-- Plus is optional, and so are fractional digits.
> SELECT 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_FORMAT.MISMATCH_INPUT
-- 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 to_number('$045', 'S$999,099.99');
45.00
-- Using brackets to denote negative values
> SELECT to_number('<1234>', '999999PR');
-1234