一、 类型转换函数
类型转换函数用于更改参数的类型。
以下函数位于表达式编辑器的“类型转换”类别中。方括号表示参数是可选的。缺省日期格式为 %yyyy-%mm-%dd。
以下示例按照 Transformer 阶段的“派生”字段中所示来显示这些函数。
1. Char
根据其数字代码值生成一个 ASCII 字符。您可以指定 allow8bits 参数来转换 8 位 ASCII 值(可选)。
· 输入:code (number),【allow8bits】
· 输出:result (char)
· 示例。以下示例将 ASCII 码 65 输出为字符 A。
Char(65)
2. DateToString
返回给定日期的字符串表示。可以指定字符串的格式(可选)。
· 输入:date (date),【format (string)】
· 输出:result (string)
· 示例。以下示例会将 mylink.mydate 列中包含的日期输出为字符串。如果 mylink.mydate 包含日期 2009 年 8 月 18 日,那么输出字符串为“2009-08-18”:
DateToString(mylink.mydate)
以下示例会将 mylink.mydate 列中包含的日期输出为 dd:mm:yyyy 格式的字符串。如果 mylink.mydate 包含日期 2009 年 8 月 18 日,那么输出字符串为“18:08:2009”:
DateToString(mylink.mydate, "%dd:%mm:%yyyy")
3. DateToDecimal
将给定的日期返回为压缩十进制值。如果您的目标十进制数指定了小数位,那么部分日期会在小数点后显示。您可以指定格式字符串来指定如何以十进制数形式存储日期(可选)。缺省格式字符串为“%yyyy%mm%dd”,因此,日期 2009-08-25 将存储为十进制数 20090825。格式字符串只能指定包含数字的格式。例如,不能指定诸如“%yyyy-%mm-%dd”之类的格式字符串,这是因为压缩十进制值中不能存储连字符 (-)。以下标记对于与十进制值之间的转换有效:
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
字面值数字 0 到 9 都有效。
· 输入:basedate (date) 【, format (string)】
· 输出:converted_date (decimal)
· 示例。如果 mylink.basedate 列包含日期 2012-08-18,那么以下函数会将日期存储为十进制数 18082012:
DateToDecimal (mylink.basedate, "%dd%mm%yyyy")
如果 mylink.basedate 列包含日期 2012-08-18,并且目标列的长度为 10,小数位为 2,那么以下函数会将日期存储为十进制数 201208.18:
DateToDecimal (mylink.basedate)
4. DecimalToDate
将给定的压缩十进制数返回为日期。在将十进制数转换为日期时,会忽略其符号和小数位。您可以指定格式字符串来指定如何以十进制数形式存储日期(可选)。缺省格式字符串为“%yyyy%mm%dd”,因此,日期 2009-08-25 将存储为十进制数 20090825。格式字符串只能指定包含数字的格式。例如,不能指定诸如“%yyyy-%mm-%dd”之类的格式字符串,这是因为压缩十进制值中不能存储连字符 (-)。以下标记对于与十进制值之间的转换有效:
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
字面值数字 0 到 9 都有效。
· 输入:basedec (decimal) 【, format (string)】
· 输出:date
· 示例。如果 mylink.mydecdata 列包含值 18082012,那么以下函数将返回日期 2012-08-18:
DecimalToDate (mylink.basedate, "%dd%mm%yyyy")
如果 mylink.mydecdata 列包含值 -201208.18,那么以下函数将返回日期 2012-08-18:
DecimalToDate (mylink.basedate)
5. DecimalToDecimal
以具有目标列定义中指定精度和小数位的十进制表示形式返回给定的十进制数。参数 rtype 指定取整类型,并设置为以下某个值(可选):
ceil。向正无穷方向对源字段取整。例如,1.4 -> 2,-1.6 -> -1。
floor。向负无穷方向对源字段取整。例如,1.6 -> 1,-1.4 -> -2。
round_inf。通过向正无穷方向对正数值取整并向负无穷方向对负数值取整,向最接近的可表示值对源字段进行取整或截断。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。
trunc_zero。不论符号如何,废弃位于目标数据支持的最右侧小数位右侧的任何小数位。例如,如果目标数据是整数,那么截断所有小数位。如果目标数据是另一个具有更少小数位的小数,那么按照目标小数的小数位数进行取整或截断。例如,1.6 -> 1,-1.6 -> -1。
· 输入:decimal (decimal) 【,rtype (string)】
· 输出:result (decimal)
· 示例。如果 mylink.mydec 列包含十进制数 2.5345,那么以下函数将返回十进制数 00000002.54。
DecimalToDecimal(mylink.mydec,"ceil")
以下函数将返回十进制数 00000002.53。
DecimalToDecimal(mylink.mydec,"floor")
以下函数将返回十进制数 00000002.53。
DecimalToDecimal(mylink.mydec,"trunc_zero")
以下函数将返回十进制数 00000002.53。
DecimalToDecimal(mylink.mydec,"round_inf")
在所有这些示例中,目标十进制的长度为 10,小数位为 2。
6. DecimalToDFloat
以 dfloat 表示形式返回给定的十进制数。参数“fix_zero”指定所有零十进制值均视为有效(缺省情况下,全部由零组成的十进制数将视为无效)(可选)。
· 输入:decimal (decimal) 【,"fix_zero"】
· 输出:result (dfloat)
· 示例。如果 mylink.mydec 列包含十进制数 00000004.00,那么以下函数将返回 dfloat 数 4.00000000000000000E+00。
DecimalToDFloat(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.00,那么以下函数将返回 dfloat 数 1.23440000000000000E+04。
DecimalToDFloat(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回 dfloat 数 1.23441200000000010E+04。
DecimalToDFloat(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回 dfloat 数 1.23441200000000010E+04。
DecimalToDFloat(mylink.mydec)
如果 mylink.mydec 列包含十进制数 00012344.000,那么以下函数将返回 dfloat 数 1.23440000000000000E+04。
DecimalToDFloat(mylink.mydec)
7. DecimalToString
将给定的十进制数返回为字符串。参数“fix_zero”指定所有零十进制值均视为有效(缺省情况下,全部由零组成的十进制数将视为无效)(可选)。这包括压缩十进制表示的符号位都为 0 以及都为内容数字的情况。该特性只在“fix_zero”为 true 时才视为有效。
· 输入:decimal (decimal) 【,"fix_zero"】
· 输出:result (string)
· 示例。如果 mylink.mydec 列包含十进制数 00000004.00,那么以下函数将返回字符串“4”:
DecimalToString(mylink.mydec,"suppress_zero")
如果 mylink.mydec 列包含十进制数 00000004.00,那么以下函数将返回字符串“0000000000000000000000000004.0000000000”。
DecimalToString(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.00。那么以下函数将返回字符串“12344”。
DecimalToString(mylink.mydec,"suppress_zero")
如果 mylink.mydec 列包含十进制数 00012344.00,那么以下函数将返回字符串“0000000000000000000000012344.0000000000”。
DecimalToString(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回字符串“0000000000000000000000012344.1200000000”。
DecimalToString(mylink.mydec,"fix_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回字符串“12344.12”:
DecimalToString(mylink.mydec,"suppress_zero")
如果 mylink.mydec 列包含十进制数 00012344.120,那么以下函数将返回字符串“0000000000000000000000012344.120000000”。
DecimalToString(mylink.mydec)
如果 mylink.mydec 列包含十进制数 00012344.000,那么以下函数将返回字符串“0000000000000000000000012344.0000000000”。
DecimalToString(mylink.mydec)
8. DecimalToTime
将给定的压缩十进制数返回为时间。您可以指定格式字符串来指定如何以十进制数形式存储时间(可选)。缺省格式字符串为“%hh%nn%ss”,因此,时间 14:03:22 将存储为十进制数 140322。格式字符串只能指定包含数字的格式。例如,不能指定诸如“%hh:%nn:%ss”之类的格式字符串,这是因为压缩十进制值中不能存储冒号 (:)。以下标记对于与十进制值之间的转换有效:
%hh(使用 24 小时制的以两位数表示的小时数)
%nn(两位数表示的分钟数)
%ss(两位数表示的秒数)
%ss.N(由两位数表示的秒数加上所允许的小数位数。小数位数从 1 到 6,包括 1 和 6)。
字面值数字 0 到 9 都有效。
如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。
· 输入:time (time) 【, format (string)】
· 输出:result (decimal)
· 示例:如果 mylink.mytimedec 列包含十进制值 200658,那么以下函数将返回时间 20:06:58:
DecimalToTime(mylink.mytimedec)
如果 mylink.mytimedec 列包含十进制值 580620,那么以下函数将返回时间 20:06:58:
DecimalToTime(mylink.mytimedec, "%ss%nn%hh")
9. DecimalToTimestamp
将给定的压缩十进制数返回为时间戳记。您可以指定格式字符串来指定如何以十进制数形式存储时间戳记(可选)。缺省格式字符串为“%yyyy%mm%dd%hh%nn%ss”,因此,时间戳记 2009-08-25 14:03:22 将存储为十进制数 20090825140322。格式字符串只能指定包含数字的格式。例如,不能指定诸如“%yyyy/%mm/%dd%hh:%nn:%ss”之类的格式字符串,这是因为压缩十进制值中不能存储斜杠 (/) 和冒号 (:)。以下标记对于与十进制值之间的转换有效:
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
%hh(使用 24 小时制的以两位数表示的小时数)
%nn(两位数表示的分钟数)
%ss(两位数表示的秒数)
%ss.N(由两位数表示的秒数加上所允许的小数位数。小数位数从 1 到 6,包括 1 和 6)。
字面值数字 0 到 9 都有效。
如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。
· 输入:timestamp (timestamp) 【, format (string)】
· 输出:result (decimal)
· 示例:如果 mylink.mytimestampdec 列包含值 19580818200658,那么以下函数将返回时间戳记 1958–08–18 20:06:58:
DecimalToTimestamp(mylink.mytimestampdec)
如果 mylink.mytimestampdec 列包含十进制值 200658580818,那么以下函数将返回时间戳记 1958–08–18 20:06:58:
DecimalToTimestamp(mylink.mytimestampdec, "%hh%nn%ss%yy%mm%dd")
10. DFloatToDecimal
以十进制表示形式返回给定的 dfloat。参数 rtype 指定取整类型,并设置为以下某个值(可选):
ceil。向正无穷方向对源字段取整。例如,1.4 -> 2,-1.6 -> -1。
floor。向负无穷方向对源字段取整。例如,1.6 -> 1,-1.4 -> -2。
round_inf。通过向正无穷方向对正数值取整并向负无穷方向对负数值取整,向最接近的可表示值对源字段进行取整或截断。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。
trunc_zero。不论符号如何,废弃位于目标数据支持的最右侧小数位右侧的任何小数位。例如,如果目标数据是整数,那么截断所有小数位。如果目标数据是另一个具有更少小数位的小数,那么按照目标小数的小数位数进行取整或截断。例如,1.6 -> 1,-1.6 -> -1。
· 输入:number (dfloat), 【rtype (string)】
· 输出:result (decimal)
· 示例。如果 mylink.myfloat 列包含 dfloat 数 2.534,那么以下函数将返回十进制数 00000002.54。
DFloatToDecimal(mylink.mydec,"ceil")
如果 mylink.myfloat 列包含 dfloat 数 2.534,那么以下函数将返回十进制数 00000002.53。
DFloatToDecimal(mylink.mydec,"floor")
如果 mylink.myfloat 列包含 dfloat 数 2.534,那么以下函数将返回十进制数 00000002.53。
DFloatToDecimal(mylink.mydec,"trunc_zero")
如果 mylink.myfloat 列包含 dfloat 数 2.534,那么以下函数将返回十进制数 00000002.53。
DFloatToDecimal(mylink.mydec,"round_inf")
11. DfloatToStringNoExp
使用指定小数位,以无指数的字符串表示形式返回给定的 dfloat。
· 输入:number (dfloat), scale (string)
· 输出:result (string)
· 示例。如果 mylink.myfloat 列包含 dfloat 数 2.534,那么以下函数将返回字符串 00000002.50:
DfloatToStringNoExp(mylink.myfloat,2)
IsValid
返回给定的字符串对于给定类型是否有效。有效类型包括“date”、“decimal”、“dfloat”、“sfloat”、“int8”、“uint8”、“int16”、“uint16”、“int32”、“uint32”、“int64”、“uint64”、“raw”、“string”、“time”、“timestamp”和“ustring”。对于数据类型 date、time 和 timestamp,您可以指定格式字符串(可选)。格式字符串描述输入数据的格式与 date、time 或 timestamp 的缺省格式不同时,输入数据所使用的格式。date 的缺省格式为“%yyyy-%mm-%dd”。time 的缺省格式为“%hh:%mm:%ss”。timestamp 的缺省格式为“%yyyy-%mm-%dd %hh:%mm:%ss”。
· 输入:type (string), teststring (string) 【, format (string)】
· 输出:result (int8)
· 示例。如果 mylink.mystring 列包含字符串“1”,那么以下函数将返回值 1。
IsValid("int8",mylink.mystring)
//代码效果参考: http://www.lyjsj.net.cn/wx/art_24133.html
如果 mylink.mystring 列包含字符串“380096.06”,那么以下函数将返回值 0。
IsValid("int8",mylink.mystring)
12. IsValidDate
返回给定的值是否为有效的 date 类型。
· 输入:testdate (date)
· 输出:result (int8)
· 示例。如果 mylink.mydate 列包含日期 2011-09-13,那么以下函数将返回值 1。
IsValidDate(mylink.mydate)
如果 mylink.mydate 列包含字符串“380096.06”,那么以下函数将返回值 0,这是因为转换后的字符串不是有效的 date 类型。
IsValidDate(StringTodate (mylink.mydate))
IsValidDecimal
返回给定的值是否为有效的 decimal 类型。如果将 allzerosflag 设置为 0,那么全零表示将视为无效。缺省情况下,allzerosflag //代码效果参考:http://www.lyjsj.net.cn/wz/art_24131.html
设置为 0。· 输入:testvalue (decimal) 【, allzerosflag (uint8)】
· 输出:result (int8)
· 示例。如果 mylink.mynum 列包含值 310007.65,那么以下函数将返回值 1。
IsValidDecimal(mylink.mynum)
如果 mylink.mynum 列包含字符串“wake-robin”,那么以下函数将返回值 0,这是因为转换后的字符串不是有效的 decimal 类型。
IsValidDecimal(StringToDecimal (mylink.mynum))
13. IsValidTime
返回给定的时间是否为有效的 time 类型。
· 输入:testtime (time)
· 输出:result (int8)
· 示例。如果 mylink.mytime 列包含时间 23:09:22,那么以下函数将返回值 1:
IsValidTime(mylink.mytime)
如果 mylink.mydate 列包含字符串“IbnKayeed”,那么以下函数将返回值 0,这是因为转换后的字符串不是有效的 time 类型。
IsValidTime(StringToTime (mylink.mytime))
14. IsValidTimestamp
返回给定的时间戳记是否为有效的 timestamp 类型。
· 输入:testtimestamp (timestamp)
· 输出:result (int8)
· 示例。如果 mylink.mytimestamp 列包含时间 2011-09-13 23:09:22,那么以下函数将返回值 1:
IsValidTimestamp(mylink.mytimestamp)
如果 mylink.mytimestamp 列包含字符串“one of two”,那么以下函数将返回值 0,这是因为转换后的字符串不是有效的 timestamp 类型。
IsValidTimestamp(StringToTimestamp (mylink.mytimestamp))
15. RawNumAt
返回指定 raw 字段中指定索引值的整数值。索引从 0 开始。
· 输入:rawfield (raw), index (int32)
· 输出:result (int32)
· 示例。如果 mylink.myraw 列包含从字符串“hello”派生的 raw 值,那么以下函数将返回整数 0x68(字符 h 对应的 ASCII 码值):
RawNumAt(mylink.myraw, 0)
如果 mylink.myraw 列包含从字符串“hello”派生的 raw 值,那么以下函数将返回 0,这是因为指定的索引超出了范围:
RawNumAt(mylink.myraw, 12)
16. RawToString
以字符串表示形式返回给定的 raw 值。必须确保 raw 输入值包含一个字节序列,这些字节在使用输出字符串的目标字符集中为有效字符。例如,由于前导字节 0xE0 后应有范围在 【0x80..0xBF】 中的字节,因此 raw 值 { 0xE0 0x41 0x42 } 不是有效的 UTF-8 字符序列。如果将 raw 值 { xE0 x41 x42 } 传递给 RawToString 函数,那么在随后访问输出字符串时可能会出错,就像使用 UTF-8 对其进行编码一样。
· 输入:rawfield (raw)
· 输出:result (string)
· 示例。如果 mylink.myraw 列包含值 { 0x31 0x31 0x30 0x35 0x32 0x32 0x30 0x39 },那么以下函数将返回字符串“11052209”。
RawNumAt(mylink.myraw)
17. Seq
根据 ASCII 字符生成数字代码值。您可以指定 allow8bits 参数来转换 8 位 ASCII 值(可选)。
· 输入:Seq (char)
· 输出:result (number)
· 示例。以下示例将字符 A 输出为 ASCII 码 65。
Seq("A")
18. SeqAt
返回给定字符串中指定位置上字符的数字代码点值。索引从 0 开始。如果指定的索引超出范围,那么该函数将返回 0。
· 输入:basestring (string),index (int32)
· 输出:result (int32)
· 示例。如果 mylink.mystring 列包含字符串“horse”,那么以下函数将返回值 0x6F(即,字符 o 对应的 ASCII 码值)。
SeqAt(mylink.mystring, 1)
19. StringToDate
以给定的格式返回给定字符串表示的日期。如果字符串包含缺省格式 yyyy-mm-dd 的日期,那么不必指定格式字符串。
· 输入:string (string) 【,format (string)】
· 输出:result (date)
· 示例:如果 mylink.mystring 列包含字符串“1958–08–18”,那么以下函数将返回日期 1958–08–18。
StringToDate(mylink.mystring)
如果 mylink.mystring 列包含字符串“18:08:1958”,那么以下函数将返回日期 1958–08–18
StringToDate(mylink.mystring,"%dd:%mm:%yyyy")
20. StringToDecimal
以十进制表示形式返回给定的字符串。参数 rtype 指定取整类型,并设置为以下某个值(可选):
ceil。向正无穷方向对源字段取整。例如,1.4 -> 2,-1.6 -> -1。
floor。向负无穷方向对源字段取整。例如,1.6 -> 1,-1.4 -> -2。
round_inf。通过向正无穷方向对正数值取整并向负无穷方向对负数值取整,向最接近的可表示值对源字段进行取整或截断。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。
trunc_zero。不论符号如何,废弃位于目标数据支持的最右侧小数位右侧的任何小数位。例如,如果目标数据是整数,那么截断所有小数位。如果目标数据是另一个具有更少小数位的小数,那么按照目标小数的小数位数进行取整或截断。例如,1.6 -> 1,-1.6 -> -1。
· 输入:string (string),【rtype (string)】
· 输出:result (decimal)
· 示例。如果 mylink.mystring 列包含字符串“19982.22”,并且目标列定义为精度为 7,小数位为 2,那么以下函数将返回十进制数 19983.22。
StringToDecimal(mylink.mystring)
如果 mylink.mystring 列包含字符串“19982.2276”,并且目标列定义为精度为 7,小数位为 2,那么以下函数将返回十进制数 19983.23。
StringToDecimal(mylink.mystring,"ceil")
21. StringToRaw
以 raw 表示形式返回字符串。
· 输入:string (string)
· 输出:result (raw)
· 示例。如果 mylink.mystring 列包含字符串“hello”,并且目标列定义为二进制类型,那么以下函数将返回值 { 0x68 0x65 0x6C 0x6C 0x6F }。
StringToRaw(mylink.mystring)
22. StringToTime
返回给定字符串的时间表示。
· 输入:string (string),【format (string)】
· 输出:result (time)
· 示例:如果 mylink.mystring 列包含字符串“20:06:58”,那么该函数将返回时间 20:06:58。
StringToTime(mylink.mystring)
如果 mylink.mystring 列包含字符串“20:6:58”,那么该函数将返回时间 20:06:58。
StringToTime(mylink.mystring,"%(h,s):$(n,s):$(s,s)")
23. StringToTimestamp
返回给定字符串的时间表示。
· 输入:string (string) 【format (string)】
· 输出:result (time)
· 示例:如果 mylink.mystring 列包含字符串“1958–08–08 20:06:58”,那么该函数将返回时间戳记 1958–08–08 20:06:58。
StringToTimestamp(mylink.mystring)
如果 mylink.mystring 列包含字符串“8/ 8/1958 20: 6:58”,那么该函数将返回时间戳记 1958–08–08 20:06:58。
StringToTimestamp(mylink.mystring, "%(d,s)/%(m,s)/%yyyy%(h,s):$(n,s):$(s,s)")
24. StringToUstring
返回给定字符串的 ustring,可以选择使用指定的映射(否则,将使用项目缺省值)。
· 输入:string (string),【mapname(string)】
· 输出:result (ustring)
· 示例:如果 mylink.mystring 列包含字符串“11052009”,那么以下函数将返回 ustring“11052009”
StringToUstring(mylink.mystring)
25. TimestampToDate
返回给定时间戳记的日期。
· 输入:timestamp (timestamp)
· 输出:result (date)
· 示例:如果 mylink.mytimestamp 列包含时间戳记 1958–08–18 20:06:58,那么以下函数将返回日期 1958–08–18:
TimestampToDate(mylink.mytimestamp)
26. TimestampToDecimal
将给定的时间戳记返回为压缩十进制。您可以指定格式字符串来指定如何以十进制数形式存储时间戳记(可选)。缺省格式字符串为“%yyyy%mm%dd%hh%nn%ss”,因此,时间戳记 2009-08-25 14:03:22 将存储为十进制数 20090825140322。格式字符串只能指定包含数字的格式。例如,不能指定诸如“%yyyy/%mm/%dd%hh:%nn:%ss”之类的格式字符串,这是因为压缩十进制值中不能存储斜杠 (/) 和冒号 (:)。以下标记对于与十进制值之间的转换有效:
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
%hh(使用 24 小时制的以两位数表示的小时数)
%nn(两位数表示的分钟数)
%ss(两位数表示的秒数)
%ss.N(由两位数表示的秒数加上所允许的小数位数。小数位数从 1 到 6,包括 1 和 6)。
字面值数字 0 到 9 都有效。
如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。
· 输入:timestamp (timestamp) 【, format (string)】
· 输出:result (decimal)
· 示例:如果 mylink.mytimestamp 列包含时间戳记 1958–08–18 20:06:58,那么以下函数将返回十进制值 19580818200658:
TimestampToDecimal(mylink.mytimestamp)
如果 mylink.mytimestamp 列包含时间戳记 1958–08–18 20:06:58,那么以下函数将返回十进制值 200658580818:
TimestampToDecimal(mylink.mytimestamp, "%hh%nn%ss%yy%mm%dd")
27. TimestampToString
返回给定时间戳记的字符串。
· 输入:timestamp (timestamp) 【format (string)】
· 输出:result (string)
· 示例:如果 mylink.mytimestamp 列包含时间戳记 1958–08–1820:06:58,那么该函数将返回字符串“1958–08–1820:06:58”。
TimestampToString(mylink.mytimestamp)
如果 mylink.mytimestamp 列包含时间戳记 1958–08–1820:06:58,那么该函数将返回字符串“18/08/1958 20:06:58”:
TimestampToString(mylink.mytimestamp, "%dd/%mm/%yyyy %hh:$nn:$ss")
28. TimestampToTime
返回给定时间戳记的字符串表示。
· 输入:timestamp (timestamp)
· 输出:result (time)
· 示例:如果 mylink.mytimestamp 列包含时间戳记 1958–08–1820:06:58,那么该函数将返回时间 20:06:58:
TimestampToTime(mylink.mytimestamp)
29. TimeToString
返回给定时间的字符串。
· 输入:timestamp (timestamp) 【format (string)】
· 输出:result (time)
· 示例:如果 mylink.mytime 列包含时间 20:06:58,那么以下函数将返回字符串“20:06:58”:
TimeToString(mylink.mytime)
如果 mylink.mytime 列包含时间 20:06:58,那么以下函数将返回字符串“58:06:20”:
TimeToString(mylink.mytime, "%ss:$nn:$hh")
30. TimeToDecimal
将给定的时间返回为压缩十进制。您可以指定格式字符串来指定如何以十进制数形式存储时间(可选)。缺省格式字符串为“%hh%nn%ss”,因此,时间 14:03:22 将存储为十进制数 140322。格式字符串只能指定包含数字的格式。例如,不能指定诸如“%hh:%nn:%ss”之类的格式字符串,这是因为压缩十进制值中不能存储冒号 (:)。以下标记对于与十进制值之间的转换有效:
%hh(使用 24 小时制的以两位数表示的小时数)
%nn(两位数表示的分钟数)
%ss(两位数表示的秒数)
%ss.N(由两位数表示的秒数加上所允许的小数位数。小数位数从 1 到 6,包括 1 和 6)。
字面值数字 0 到 9 都有效。
如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。
· 输入:time (time) 【, format (string)】
· 输出:result (decimal)
· 示例:如果 mylink.mytime 列包含时间 20:06:58,那么以下函数将返回十进制值 200658:
TimeToDecimal(mylink.mytime)
如果 mylink.mytime 列包含时间 20:06:58,那么以下函数将返回十进制值 580620:
TimeToDecimal(mylink.mytime, "%ss%nn%hh")
31. UstringToString
返回给定 ustring 的字符串,可以选择使用指定的映射(否则,将使用项目缺省值)。
· 输入:string (ustring) 【, mapname(string)】
· 输出:result (string)
· 示例:如果 mylink.myustring 列包含 ustring“11052009”,那么以下函数将返回字符串“11052009”:
UstringToString(mylink.myustring)
二、 字符串函数
字符串函数用于操作字符串。
以下函数位于表达式编辑器的“字符串”类别中。方括号表示参数是可选的。以下示例按照 Transformer 阶段的“派生”字段中所示来显示这些函数。
32. AlNum
检查给定的字符串中是否只包含字母数字字符。
· 输入:string (string)
· 输出:true/false (int8)
· 示例。如果 mylink.mystring1 包含字符串“OED_75_9*E”,那么以下函数将返回值 -1 (false)。
AlNum(mylink.mystring1)
如果 mylink.mystring2 包含字符串“12 red roses”,那么以下函数将返回值 1 (true)。
AlNum(mylink.mystring2)
33. Alpha
检查给定的字符串是否只包含字母字符。
· 输入:string (string)
· 输出:true/false (int8)
· 示例。如果 mylink.mystring1 包含字符串“12 red roses”,那么以下函数将返回值 -1 (false)。
Alpha(mylink.mystring1)
如果 mylink.mystring2 包含字符串“twelve red roses”,那么以下函数将返回值 1 (true)。
Alpha(mylink.mystring2)
34. CompactWhiteSpace
返回将所有连续空格减少到单个空格后得到的字符串。
· 输入:string (string)
· 输出:result (string)
· 示例。如果 mylink.mystring 包含字符串“too many spaces”,那么以下函数将返回字符串“too many spaces”:
CompactWhiteSpace(mylink.mystring)
35. Compare
比较用于排序的两个字符串。比较可以采用左对齐形式(缺省值),也可以采用右对齐形式。右对齐比较将指定字符串中的数字子串作为数字进行比较。在每个字符串中,数字字符串必须出现相同的字符位置。例如,对字符串 AB100 和 AB99 的右对齐比较结果表明 AB100 大于 AB99,这是因为 100 大于 99。对字符串 AC99 和 AB100 的右对齐比较结果表明 AC99 大于 AB100,这是因为 C 大于 B。
· 输入:string1 (string),string2 (string),【justification (L or R)】
· 输出:result (int8),string1 小于 string2 时为 -1,两者相同时为 0,string1 大于 string2 时返回 1。
· 示例。如果 mylink.mystring1 包含字符串“AB99”并且 mylink.mystring2 包含字符串“AB100”,那么以下函数将返回结果 1。
Compare(mylink.mystring1,mylink.mystring2,L)
如果 mylink.mystring1 包含字符串“AB99”并且 mylink.mystring2 包含字符串“AB100”,那么以下函数将返回结果 -1。
Compare(mylink.mystring1,mylink.mystring2,R)
36. CompareNoCase
比较用于排序的两个字符串(忽略大小写)。
· 输入:string1 (string),string2 (string)
· 输出:result (int8),string1 小于 string2 时为 -1,两者相同时为 0,string1 大于 string2 时返回 1。
· 示例。如果 mylink.mystring1 包含字符串“Chocolate Cake”并且 mylink.mystring2 包含字符串“chocolate cake”,那么以下函数将返回结果 1。
ComparNoCase(mylink.mystring1,mylink.mystring2)
37. CompareNum
比较两个字符串中的前 n 个字符。
· 输入:string1 (string),string2 (string),length (int16)
· 输出:result (int8),string1 小于 string2 时为 -1,两者相同时为 0,string1 大于 string2 时返回 1。
· 示例。如果 mylink.mystring1 包含字符串“Chocolate”并且 mylink.mystring2 包含字符串“Choccy Treat”那么以下函数将返回结果 1。
ComparNum(mylink.mystring1