IBM FileNet P8, V5.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 数据类型是不合逻辑的,因此会发生语法错误。必要时,在 convert 函数中使用某个表达式之前,使用 is_valid 函数来验证该表达式的类型。

从 Boolean 类型进行转换

如果 source_expr 为 Boolean 类型,那么 convert 函数的结果为如下所示。

表 3. 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. convert 函数在数据类型为浮点类型时的结果
从 float 类型转换为... 结果
Boolean

如果 source_expr = 0,那么结果为 false;如果 source_expr = 1,那么结果为 true。

如果 source_expr <> 0 或 1,那么将产生语法错误。

float 不变。
integer 转换 source_expr 的整数部分(即,将所有数目截断到小数点右边)。如果结果不在整数范围内,那么将发生错误。
string 将产生一个用于表示浮点值的数字字符串。
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. convert 函数在数据类型为整数类型时的结果
从 integer 类型转换为... 结果
Boolean

如果 source_expr = 0,那么结果为 false;如果 source_expr = 1,那么结果为 true。

如果 source_expr <> 0 或 1,那么将产生语法错误。

float 产生等价的浮点值。
integer 不变。
string 将产生一个用于表示整数值的数字字符串。
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. 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. 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) 与 UTC 之间存在 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 与 UTC 之间存在 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 浮点型表达式或整型表达式。
num_mask

这是用于确定 numbertostring 函数的输出格式的数字掩码

虽然是可选的,但是应注意,如果您不输入数字掩码,那么 numbertostring 函数等价于 convert 函数。

数字掩码

数字掩码是用来格式化 numbertostring 函数输出的模板。数字掩码是字符串表达式,其中包含下列组成部分的任何有效组合。

组件 含义
+(加号)

当它是掩码中的第一个组成部分或最后一个组成部分时,将显示该数目的符号。

当它不在第一个组成部分或最后一个组成部分时,会将加号插入输出字符串,其位置就是它在掩码中所处的位置。例如:

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

将输出 123+45

-(减号)

当它是掩码中的第一个组成部分或最后一个组成部分时,如果此数目是负数,那么将显示负号;如果此数目是正数,那么将显示空格。

当它不在第一个组成部分或最后一个组成部分时,会将减号插入输出字符串,其位置就是它在掩码中所处的位置。例如:

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

将输出 123-45-6789

#(编号符号) 显示有效数字。当掩码中包含的 # 数目超过有效数字时,最右边的那些 # 将先接收数字,而超过的那些 # 将填充空白。
0(零) 显示一个数字,无论它是否有效;可能会产生前导 0 和结尾 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。在 convert 函数中使用某个表达式之前,通过 is_valid 函数来验证该表达式的类型可能会很有用。使用以下语法:
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)


最近一次更新时间: 2015 年 10 月
bpfe005.htm

© Copyright IBM Corporation 2015.