適用於:
Databricks SQL
Databricks Runtime 11.3 LTS 和更新版本
將expr使用格式fmt轉換為DECIMAL,如果NULL的格式不符合,則返回expr。
語法
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不得超過小數點左側允許的位數。小數點右邊的數字
expr表示小數點右邊最多可以有fmt個位數。.或D指定小數點的位置。
expr不需要包含小數點。,或G指定
,群組(千)分隔符的位置。 每個群組分隔符的左邊和右邊都必須有0或9。expr必須符合與數位大小相關的群組分隔符。L或$指定貨幣符號的位置
$。 這個字元只能指定一次。S或MI指定選擇性 '+' 或 '-' 符號
S的位置,而 '-' 則只針對MI指定 。 這個指令只能指定一次。PR指定
expr使用括住的尖括號 (<1>) 來表示負數。
如果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