分享方式:


try_to_number函式

適用於: 檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 11.3 LTS 和更新版本

使用格式fmtexpr回轉換成 DECIMAL,如果NULLexpr不符合格式,則傳回 。

語法

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 數位總數 (09) ,而 s 是小數點之後的位數,如果小數點後面沒有位數,則為 0。

fmt 可以包含下列元素(不區分大小寫):

  • 09

    指定和9之間的0預期數位。 0小數點左邊的 ,expr表示必須至少有一個數位。 前置 9 表示 expr 可能會省略這些數位。

    expr 小數點左邊的位數不得較大。

    小數點右邊的數位表示小數點fmt右邊的位數expr上限。

  • .D

    指定小數點的位置。

    expr 不需要包含小數點。

  • ,G

    指定群組 (千) 分隔符的位置 , 。 每個群組分隔符的左邊和右邊都必須有 09expr 必須符合與數位大小相關的群組分隔符。

  • L$

    指定貨幣符號的位置 $ 。 這個字元只能指定一次。

  • SMI

    指定選擇性 '+' 或 '-' 符號 S的位置,而 '-' 則只針對 MI指定 。 這個指示詞只能指定一次。

  • PR

    指定以 expr 換行角括弧 (<1>) 表示負數。

如果 expr 包含透過9以外的任何字元,或中fmt允許的字元0NULL則會傳回 。

針對嚴格的語意使用 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