IBM FileNet P8, 5.2.1 版            

資料類型轉換函數

本節包含轉換表示式資料類型之函數的簡要說明。

表 1. 轉換資料類型之函數的表格
函數 作用
convert 將表示式從一個支援的資料類型轉換成另一個支援的資料類型。
numbertostring 使用指定的遮罩,將整數或浮點表示式轉換成字串表示式。
stringtotime 使用指定的遮罩,將字串表示式轉換成時間表示式。
timetostring 使用指定的遮罩,將時間表示式轉換成字串表示式。
is_valid 決定指定的表示式是否為可轉換成指定簡式資料類型的有效值。

convert

此函數將表示式從一個支援的資料類型轉換成另一個支援的資料類型。請使用下列語法:
convert (source_expr, type_name)
其中:
表 2. convert 函數的參數及說明
參數 說明
source_expr 任何受支援資料類型的表示式。此表示式會轉換成 type_name 中指定的資料類型。
type_name

source_expr 轉換成的資料類型。有效項目為 float、float[ ]、integer、integer[ ]、string、string[]、Boolean、Boolean[ ]、time 及 time[ ]。

請注意,如果 type_name 後接方括弧 ([ ]),則 source_expr 也必須是陣列。陣列中的每一個元素會依套用於簡式資料類型的規則來轉換成 type_name。

convert 函數的結果會隨著 source_exp 和 type_name 的資料類型而不同。

註: 請注意,某些資料類型組合與 convert 函數的搭配使用下會導致語法錯誤。 例如,將 Time 資料類型轉換成 Boolean 資料類型是不合邏輯的,所以會發生語法錯誤。必要時,請先使用 is_valid 函數來驗證表示式的類型,再於 convert 函數中使用該表示式

從 Boolean 轉換

如果 source_expr 是 Boolean 類型,則 convert 函數的結果會如下所示。

表 3. 資料類型為 Boolean 類型時的 convert 函數結果
從 Boolean 轉換成... 結果
Boolean 不變更。
Float 如果布林表示式為 true,則結果為 1;如果布林表示式為 false,則結果為 0。
Integer 如果布林表示式為 true,則結果為 1;如果布林表示式為 false,則結果為 0。
String 如果布林表示式為 true,則結果為 "true";如果布林表示式為 false,則結果為 "false"。
Time 語法錯誤。

從 Float 轉換

如果 source_expr 是 Float 類型,則 convert 函數的結果會如下所示。

表 4. 資料類型為 Float 類型時的 convert 函數結果
從 Float 轉換成... 結果
Boolean

如果 source_expr = 0,則結果為 false;如果 source_expr = 1,則結果為 true。

如果 source_expr <> 0 或 1,則會產生語法錯誤。

Float 不變更。
Integer 轉換 source_expr 的整數部分(也就是將所有數字截斷至小數點右邊)。如果結果不在整數範圍內,則會發生錯誤。
String 產生代表 Float 的數值字元字串。
Time

使用 source_expr 的整數部分作為要新增至 1/1/1970 00:00:00 UTC(世界標準時間)的秒數;傳回新時間。

UTC(世界標準時間)早期稱為 GMT(格林威治標準時間),UTC 是標準全球參照時區。

例如,convert (5.3, time) 會傳回 1/1/1970 00:00:05。

從 Integer 轉換

如果 source_expr 是 Integer 類型,則 convert 函數的結果會如下所示。
表 5. 資料類型為 Integer 類型時的 convert 函數結果
從 Integer 轉換成... 結果
Boolean

如果 source_expr = 0,則結果為 false;如果 source_expr = 1,則結果為 true。

如果 source_expr <> 0 或 1,則會產生語法錯誤。

Float 產生同等浮點值。
Integer 不變更。
String 產生代表 Integer 的數值字元字串。
Time

使用 source_expr 作為要新增至 1/1/1970 00:00:00 UTC(世界標準時間)的秒數;傳回新時間。

例如,convert (5, time) 會傳回 1/1/1970 00:00:05。

從 String 轉換

如果 source_expr 是 String 類型,則 convert 函數的結果會如下所示。

表 6. 資料類型為 String 類型時的 convert 函數結果
從 String 轉換成... 結果
Boolean 語法錯誤,除非 source_expr = "true" 或 source_expr = "false"。 (可接受大小寫的任何組合。)
Float 語法錯誤,除非 source_expr 是浮點值的合法表示法。
Integer 語法錯誤,除非 source_expr 是整數值的合法表示法。
String 不變更。
Time

語法錯誤,除非 source_expr 是時間值的合法表示法,其使用工作流程系統的日期/時間遮罩中指定的格式。

從 Time 轉換

如果 source_expr 是 Time 類型,則 convert 函數的結果會如下所示。

表 7. 資料類型為 Time 類型時的 convert 函數結果
從 Time 轉換成... 結果
Boolean 語法錯誤。
Float

傳回現行系統時間與 1/1/1970 00:00:00 UTC(世界標準時間)之間的秒數。

比方說,如果 SysTime = 1/1/1970 00:00:28 UTC,convert (SysTime, float) 會傳回 28。

如果現行系統時間設為 UTC 以外的時區,則 convert 函數會進行必要的調整。例如,太平洋標準時間 (PST) 與世界標準時間存在 8 小時的時差;如果 SysTime = 1/1/1970 00:00:28 PST 且當地時區是 PST,則 convert(SysTime, float) 傳回 28828.0。

8(小時)* 60(分鐘)*60(秒)+ 28(秒)

Integer

傳回現行系統時間與 1/1/1970 00:00:00 UTC(世界標準時間)之間的秒數。

比方說,如果 SysTime = 1/1/1970 00:00:28 UTC,convert (SysTime, integer) 會傳回 28。

如果現行系統時間設為 UTC 以外的時區,則 convert 函數會進行必要的調整。例如,PST 與世界標準時間存在 8 小時的時差;如果 SysTime = 1/1/1970 00:00:28 PST 且當地時區是太平洋標準時間,則 convert(SysTime, integer) 傳回 28828。

8(小時)* 60(分鐘)*60(秒)+ 28(秒)

String

產生 source_expr 的字串表示法。 請注意,此字串使用工作流程系統的日期/時間遮罩中指定的格式。

Time 不變更

numbertostring

此函數使用您所指定的格式,將浮點或整數表示式轉換成字串表示式。當您想要以特定格式(例如,$1,000,000)來顯示數字時,請使用這個函數。 您也可以使用 numbertostring 函數來捨入數字。

請使用下列語法:
numbertostring (num_exp{, num_mask}opt)
其中:
參數 說明
num_exp Float 或 Integer 類型的表示式。
num_mask

決定 numbertostring 函數輸出格式的數值遮罩

選用時請注意,如果沒有輸入數值遮罩,則 numbertostring 函數的作用等同於 convert 函數。

數值遮罩

數值遮罩是用來將 numbertostring 函數輸出格式化的範本。 數值遮罩是一種字串表示式,其中含有下列元件的任何有效組合。

元件 意義
+(加號)

當是遮罩中的第一個或最後一個元件時,會顯示數字符號。

當位於第一個或最後一個以外的位置時,加號會以您放入遮罩中的確切位置插入輸出字串。例如:

numbertostring (12345, "###+##")

輸出 123+45

-(減號)

當是遮罩中的第一個或最後一個元件時,如果數字是負數,則會顯示負號,而如果數字是正數,則會顯示空格。

當位於第一個或最後一個以外的位置時,減號會以您放入遮罩中的確切位置插入輸出字串。例如:

numbertostring (123456789, "###-##-####")

輸出 123-45-6789

#(# 記號) 顯示有效位數。當遮罩包含的 # 超出有效位數時,最右邊的 # 會先收到數字,而超過的 # 會以空白填滿。
0(零) 不論是否具有意義,都會顯示數字;可能會同時產生前導零和尾端零。
. (小數) 決定小數點的位置。如果未指定,則假設小數點位於遮罩右端。數字會捨入成符合遮罩。遮罩中只允許一個小數點。

數值遮罩範例

以下是 numbertostring 函數轉換下列數字時產生的輸出: 0、+29、-3344 及 77.88369。輸出會根據顯示的數值遮罩來格式化。

註: 如果遮罩對數字而言太小,則會發生錯誤。 如果小數點左邊的 # 或 0 太少,表示遮罩太小。例如,遮罩 ## 不適用於數字 300。
遮罩 0 +29 -3344 77.88369
0000 0000 0029 3344 0078
####   29 3344 78
$#,### $ $29 $3,344 $78
+#### + +29 -3344 +78
-####   29 -3344 78
####+ + 29+ 3344- 78+
####- 29 3344- 78
##.## . 29. 執行時期錯誤 77.88

捨入數字

如果要捨入數字,請使用 numbertostring 函數及適當的數值遮罩。 每一個數字會捨入至符合遮罩中的最後一位。下列範例將數字捨入至小數點右邊第三位。 在範例中,Number1 是 Float 類型的表示式名稱。
numbertostring (Number1, "#,###.###")
如果 Number1 = 3344.7788,則產生的輸出如下:
3,344.779

is_valid

此函數決定指定的表示式是否為可轉換成指定簡式資料類型的有效值。 如果表示式有效,此函數會傳回布林值 true;否則,此函數傳回 false 值。先透過 is_valid 函數來驗證表示式的類型,再於 convert 函數中使用該表示式會非常有用。請使用下列語法:
is_valid (expr, type)
其中:
表 8. is_valid 函數的參數及說明
參數 說明
expr 任何表示式。
type 簡式資料類型(Boolean、Float、Integer、String、Time)。
以下是使用字串表示式的兩個範例。第一個範例傳回 true,第二個範例傳回 false。在第一個範例中,str = "true"。
is_valid (str, Boolean)
is_valid ("1.2.3", float)
下列範例會驗證指定的浮點表示式是否適用於轉換成 Integer 類型;這個範例傳回 false,因為浮點值超出有效整數值的範圍。
is_valid (1e20, integer)


前次更新: 2016 年 3 月
bpfe005.htm

© Copyright IBM Corp. 2016.