次の方法で共有


to_number 関数

適用対象: check marked yes Databricks SQL Databricks Runtime 11.3 LTS 以降

書式設定 fmt を使用して DECIMAL にキャストされる expr を返します。

構文

to_number(expr, fmt)

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

引数

  • expr: 数値を表す STRING 式。 expr には、先頭または末尾の空白が含まれる場合があります。
  • fmt: expr の予期される形式を指定する文字列リテラル。

戻り値

DECIMAL(p、s)。この場合、p は合計桁数 (0 または 9) で、s は、小数点以下の桁数です。ない場合は、0 になります。

fmt には、次の要素を含めることができます (大文字と小文字は区別されません)。

  • 0 または 9

    09 の間で予期される桁を指定します。 小数点の左側の 0 は、expr に少なくともその桁数が必要であることを示します。 先行する 9 は、expr でこれらの桁は省略可能であることを示しています。

    expr を、小数点の左側の桁数で許可されているよりも大きくすることはできません。

    小数点の右側の数は、fmt によって指定されている、expr が小数点の右側に対して持つことができる最大桁数を示します。

  • . または D

    小数点の位置を指定します。

    expr には小数点を含める必要はありません。

  • , または G

    , 桁区切り記号 (1000 の位) の位置を指定します。 各桁区切り記号の左右には 0 または 9 がある必要があります。 expr は、数値のサイズに関連する桁区切り記号と一致している必要があります。

  • L または $

    $ 通貨記号の場所を指定します。 この文字は 1 回だけ指定できます。

  • S または MI

    S に対してオプションの "+" または "-" 記号を指定します。MI に対しては "-" のみです。 このディレクティブは、1 回だけ指定できます。

  • PR

    書式設定文字列の末尾にのみ使用できます。山かっこで囲んで (<1>) expr が負の数値を示すことを指定します。

expr0 から 9 以外の文字、または fmt で許可されている以外の文字が含まれている場合は、エラーが返されます。

無効な expr に対してエラーではなく NULL を返すようにするには、try_to_number() を使用してください。

-- 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