Función to_number

Se aplica a: casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 11.3 LTS y versiones posteriores

Devuelve la conversión expr a DECIMAL con el formato fmt.

Sintaxis

to_number(expr, fmt)

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

Argumentos

  • expr: Expresión STRING que representa un número. expr puede incluir espacios iniciales o finales.
  • fmt: Literal de STRING que especifica el formato esperado de expr.

Devoluciones

Un DECIMAL(p, s), donde p es el número total de dígitos (0 o 9), y s es el número de dígitos después del separador decimal, o 0 si no hay ninguno.

fmt puede contener los siguientes elementos (sin distinción entre mayúsculas y minúsculas):

  • 0 o 9

    Especifica un dígito esperado entre 0 y 9. Un 0 a la izquierda de los puntos decimales indica que expr debe tener al menos tantos dígitos. El 9 inicial indica que expr puede omitir estos dígitos.

    expr no debe ser mayor que lo permitido por el número de dígitos a la izquierda del separador decimal.

    Los dígitos situados a la derecha del decimal indican el número máximo de dígitos que puede tener expr a la derecha del separador decimal especificado por fmt.

  • . o D

    Especifica la posición del separador decimal.

    expr no es necesario incluir un separador decimal.

  • , o G

    Especifica la posición del separador de agrupación (miles) ,. Tiene que haber un 0 o 9 a la izquierda y a la derecha de cada separador de agrupación. expr tiene que coincidir con el separador de agrupación pertinente para el tamaño del número.

  • L o $

    Especifica la ubicación del signo de moneda $. Este carácter solo se puede especificar una vez.

  • S o MI

    Especifica la posición de un signo opcional "+" o "-" para S, y "-" solo para MI. Esta directiva solo se puede especificar una vez.

  • PR

    Solo se permite al final de la cadena de formato; especifica que expr indica un número negativo con corchetes angulares de ajuste (<1>).

Si expr contiene caracteres que no sean de 0 a 9, o caracteres permitidos en fmt, se devuelve un error.

Para devolver NULL en lugar de un error de expr no válido, use try_to_number().

Ejemplos

-- 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 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 to_number('$045', 'S$999,099.99');
 45.00

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