Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Fonction
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, 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 ] ' }
Les arguments
-
expr: expression de type chaîne (STRING) représentant un nombre.exprpeut inclure des espaces de début ou de fin. -
fmt: littéral STRING, spécifiant le format attendu deexpr.
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 chiffres après la virgule décimale.
fmt peut contenir les éléments suivants (ne respectant pas la casse) :
0ou9Spécifie un chiffre attendu entre
0et9. Un0à gauche des décimales indique queexprdoit avoir au moins autant de chiffres. Un9initial indique queexprpeut omettre ces chiffres.exprne 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
exprpeut avoir à droite de la virgule décimale spécifié parfmt..ouDSpécifie la position de la virgule décimale.
exprn’a pas besoin d’inclure une virgule décimale.,ouGSpécifie la position du séparateur de regroupement (milliers)
,. Il doit y avoir un0ou9à gauche et à droite de chaque séparateur de regroupement.exprdoit correspondre au séparateur de regroupement correspondant à la taille du nombre.Lou$Spécifie l’emplacement du signe monétaire
$. Ce caractère ne peut être spécifié qu’une seule fois.SouMISpé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.PRSpécifie que
exprindique 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