表示式剖析器

此產品針對可能有數學或邏輯/布林性質的表示式定義作業提供支援。表示式可以包括變數和函數。

資料總管資料欄參數就是一個使用範例。該參數支援公式的定義。邊緣應用程式也支援使用這個剖析器的公式或表示式。例如,有些應用程式包含「規則」物件 (計算規則、表單規則或使用規則) 類型,用於可支援套用公式的驗證或計算。

下表重點整理使用此剖析器的表示式所支援的項目。

類目 表示式可支援 描述
資料類型 數字
字串
布林
列表
文字 數字
用單引號或雙引號括住的字串。
備註:目前不支援「逸出」特殊字元。
布林值:
運算 +
/
*
^ 或 ** 乘冪
% 模數
邏輯運算 = 等於
> 大於
>= 大於或等於
< 小於
<= 小於或等於
!= 或 <> 不等於

此資料表可識別支援的函數。請注意,有幾個函數適用於值列表。請注意,雖然是以小寫列出函數,但資料總管中的資料欄參數語法指示以全部大寫字母參考函數。系統在評估之前,會將資料總管資料欄公式轉換為小寫。

函數 參數 結果 註釋
size( ) 列表元素 列表中的元素數。
isEmpty( ) 列表元素 如果列表為空,則傳回真。
sum( ) 「數字」類型的列表元素 傳回列表中數字的總和。
avg( ) 「數字」類型的列表元素 傳回列表中數字的平均值。
一或多個用逗號分隔的數字 傳回數字引數的平均值。
max( ) 列表元素 傳回列表中的最大值。
一或多個可比較的元素。 傳回數字引數的最大值。
min( ) 列表元素 傳回列表中的最小值。
一或多個可比較的元素。 傳回數字引數的最小值。
abs( ) 數字 傳回絕對值。
ceiling( ) 數字 將數字向上取整。
exp10( ) 數字 將數字乘冪提高 10。
acos( ) 數字 傳回數字的反餘弦值 (以弧度為單位)。 結果會失去精確度,因為它使用系統的雙浮點數函數。
asin( ) 數字 傳回數字的反正弦 (以弧度為單位)。 結果會失去精確度,因為它使用系統的雙浮點數函數。
atan( ) 數字 傳回數字的反正切 (以弧度為單位)。 結果會失去精確度,因為它使用系統的雙浮點數函數。
cos( ) 弧度 傳回弧度角輸入的餘弦。 結果會失去精確度,因為它使用系統的雙浮點數函數。
exp( ) 數字 將數字乘冪提高 e。 結果會失去精確度,因為它使用系統的雙浮點數函數。
log10( ) 數字 以 10 為底數,取數字的對數。 結果會失去精確度,因為它使用系統的雙浮點數函數。
log( ) 數字 取數字的自然對數 (以 e 為底數)。 結果會失去精確度,因為它使用系統的雙浮點數函數。
sin( ) 弧度 傳回弧度角輸入的正弦。 結果會失去精確度,因為它使用系統的雙浮點數函數。
sqrt( ) 數字 傳回數字的平方根。 結果會失去精確度,因為它使用系統的雙浮點數函數。
tan( ) 弧度 傳回弧度角輸入的正切。 結果會失去精確度,因為它使用系統的雙浮點數函數。
floor( ) 數字 將數字向下取整。
round( ) 數字 假設小數位數為 0。套用「向正無窮大進位」的預設捨入模式。
數字、小數位數 套用「向正無窮大進位」的預設捨入模式。
數字、小數位數、模式 模式必須設定為以下之一:
  • “ROUND_​CEILING”

  • “ROUND_​DOWN”

  • “ROUND_​FLOOR”

  • “ROUND_​HALF_​DOWN”

  • “ROUND_​HALF_​UP”

  • “ROUND_​HALF_​EVEN”

  • “ROUND_​UP”

  • “ROUND_​UNNECESSARY”

negate( ) 數字 傳回數字的負值。 僅可在資料總管中使用。

以下是應用程式中支援用於值列表的特殊函數。在每一種情況下,語法都是 function [ indexVariable in listName | expression using indexVariable ],其中 indexVariable 是由公式編寫者選擇,代表列表中的每一個項目,用於評估每個項目的表示式必須參考該變數。

備註:公式若想在功能區中發揮特定的用途,支援的語法取決於這個特殊的功能區。例如,在 Oracle Public Sector Revenue Management 中,「條件式元素驗證」表單規則支援一個公式。在該表單規則中,包括列表在內的所有變數,都在表單規則中使用字母宣告,而公式又依次使用這些字母。在這種案例下,下面的函數會將宣告的變數字母參考為 “listName”。使用此表示式剖析器的其他特定功能區域,可能支援不同的語法來參考元素或列表。
函數 描述 範例
any [ ] 如果列表中的任何項目符合表示式,則此函數會傳回值。 如果餘額列表中的任何項目大於 0,則以下會傳回
any [ i in list/Balance | i > 0 ]
all [ ] 如果列表中的所有項目符合表示式,則此函數會傳回值。 如果植入所有電話號碼,則以下會傳回
all [ i in list/phoneNumber | i != ' ' ]
collect [ ] 此函數會從參考的列表傳回新的元素列表,其中新列表各個項目的值,是表示式套用至每個原始值之後的結果。 以下會傳回一個新列表,其中包含套用至各個金額的稅率。
collect [ i in list/amount | i * taxRate ]
select [ ] 此函數會傳回原始列表中符合布林表示式的所有值列表。 以下只會傳回金額為負數的新列表。
select [ i in list/amount | i < 0 ]
reject [ ] 此函數會傳回原始列表中不符合布林表示式的所有值列表。 以下只會傳回金額不為負數的新列表。
reject [ i in list/amount | i < 0 ]