try_to_number
関数
適用対象: Databricks SQL Databricks Runtime 11.3 LTS 以降
書式設定 fmt
を使用して DECIMAL にキャストされる expr
を返します。expr
が書式と一致しない場合は、NULL
を返します。
構文
try_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
0
と9
の間で予期される桁を指定します。 小数点の左側の0
は、expr
に少なくともその桁数が必要であることを示します。 先行する9
は、expr
でこれらの桁は省略可能であることを示しています。expr
を、小数点の左側で許可されている桁数よりも大きくすることはできません。小数点の右側の桁数は、
fmt
によって指定されている小数点の右側にexpr
が持つことができる最大桁数を示します。.
またはD
小数点の位置を指定します。
expr
には小数点を含める必要はありません。,
またはG
,
桁区切り記号 (1000 の位) の位置を指定します。 各桁区切り記号の左右には0
または9
がある必要があります。expr
は、数値のサイズに関連する桁区切り記号と一致している必要があります。L
または$
$
通貨記号の場所を指定します。 この文字は 1 回だけ指定できます。S
またはMI
S
に対してオプションの "+" または "-" 記号を指定します。MI
に対しては "-" のみです。 このディレクティブは、1 回だけ指定できます。PR
山かっこで囲んで (
<1>
)、expr
が負の数値を示すことを指定します。
expr
に 0
から 9
以外の文字、または fmt
で許可されている以外の文字が含まれている場合は、NULL
が返されます。
厳格なセマンティックの場合は、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 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