类型转换函数 ( DataStage® )

使用类型转换函数来改变参数的类型。

以下函数位于表达式编辑器的类型转换类别中。 括号表示参数是可选的。 默认日期格式为 %d %yyyy-%mm-d。

这些示例展示了该函数在 Transformer stage 的推导字段中的呈现形式。

Base64ToString
使用基本 64 位解码对字符串进行解码。
  • 输入 :源字符串(字符串)
  • 输出 :结果(字符串)
  • 示例。 如果 mylink.mystring1 包含基本 64 位编码字符串,那么以下函数将返回基本 64 位解码字符串。
    Base64ToString(mylink.mystring1)
Char
根据其数字代码值生成一个 ASCII 字符。 您可以指定 allow8bits 参数来转换 8 位 ASCII 值(可选)。
  • 输入 :代码(数字),[ allow8bits ]
  • 输出 :结果(字符)
  • 示例。 以下示例将 ASCII 码 65 输出为字符 A。
    Char(65)
    
转换

将字符串转换为指定的内部或外部存储格式。 字符串表达式用于对要转换的字符串求值。

以下列表显示了转换过程中可指定的值。 conv_code 指定转换中涉及的存储格式类型,conv_mode 指定用于输入或输出的格式。 若将"I"指定为 conv_mode,则使用 ICONV() 函数进行转换。 若为指定"O", conv_mode则使用 OCONV() 函数进行转换。
表 1. 支持的转换代码
D 日期转换
G 组抽取
L LENGTH 函数
MB 二进制转换
MCA 掩码字母转换
MC/A 掩码非字母转换
MCD 十进制转十六进制
MCDX 十进制转十六进制
MCL 带掩码的小写转换
MCM 掩码多字节转换
MC/M 掩码单字节转换
MCN 掩码数值转换
MC/N 掩码非数字转换
MCP 掩码不可打印字符转换
MCT 首字母大写转换
MCU 带掩码的大写转换
MCW 带掩码的宽字符转换
MCX 十六进制转十进制
MCXD 十六进制转十进制
MD 掩码十进制转换
ML 掩码左转换
MR 掩码右转
MT 时间转换
MU0C 十六进制到Unicode字符的转换
MX 十六进制转换
MY ASCII转换
  • 输入 :字符串(string)、转换代码(string)、转换模式(string)
  • 输出 :结果(字符串)
  • 示例。 如果 mylink.mystring 包含字符串 "CDE",则以下函数返回值 434445。
    Conversion(mylink.mystring,"MB", "I")
    
    示例。 如果 mylink.mystring 包含字符串"1111",则以下函数返回值15。
    Conversion(mylink.mystring,"MB", "I")
    
DateToDecimal
将给定的日期返回为压缩十进制值。 如果您的目标十进制数指定了小数位数,那么部分日期会在小数点后显示。 您可以指定格式字符串来指定如何以十进制数形式存储日期(可选)。 缺省格式字符串为“%yyyy%mm%dd”,因此,例如日期 2009-08-25 将存储为数字 20090825。 格式字符串只能指定包含数字的格式。 例如,您不能指定格式字符串,如“%yyyy-%mm-%dd”,因为无法在压缩十进制值中存储连字符 (-)。 以下标记对于与十进制值之间的转换有效:

%yyyy(四位数年份)

%yy(两位数表示的年份)

%NNNNyy(截断的两位数年份)

%mm(两位数表示的月份)

%dd(两位数表示的一月中的第几天)

%ddd(三位数表示的一年中的第几天)

字面值数字 0 到 9 都有效。

  • 输入 :基准日期(日期)[, 格式(字符串)]
  • 输出 :转换后的日期(十进制)
  • 示例。 如果该列 mylink.basedate 包含日期 2012-08-18,则以下函数将该日期存储为十进制数 18082012:
    DateToDecimal (mylink.basedate, "%dd%mm%yyyy")
    如果列 mylink.basedate 包含日期 2012-08-18,且目标列的长度为 10,精度为 2,则以下函数将该日期存储为十进制数。 201208.18:
    DateToDecimal (mylink.basedate)
DateToString
返回给定日期的字符串表示。 可以指定字符串的格式(可选)。
  • 输入 :日期(日期),[格式(字符串)]
  • 输出 :结果(字符串)
  • 示例。 以下示例会将 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")
    
DecimalToDate
将给定的压缩十进制数返回为日期。 在将十进制数转换为日期时,会忽略其符号和小数位数。 您可以指定格式字符串来指定如何以十进制数形式存储日期(可选)。 缺省格式字符串为“%yyyy%mm%dd”,因此,例如日期 2009-08-25 将存储为数字 20090825。 格式字符串只能指定包含数字的格式。 例如,您不能指定格式字符串,如“%yyyy-%mm-%dd”,因为无法在压缩十进制值中存储连字符 (-)。 以下标记对于与十进制值之间的转换有效:

%yyyy(四位数年份)

%yy(两位数表示的年份)

%NNNNyy(截断的两位数年份)

%mm(两位数表示的月份)

%dd(两位数表示的一月中的第几天)

%ddd(三位数表示的一年中的第几天)

字面值数字 0 到 9 都有效。

  • 输入 :基数(十进制)[, 格式(字符串)]
  • 输出 :日期
  • 示例。 如果该列 mylink.mydecdata 包含值 18082012,则以下函数返回日期 2012-08-18:
    DecimalToDate (mylink.basedate, "%dd%mm%yyyy")
    如果列 mylink.mydecdata 包含 -201208.18 值,则以下函数返回日期 2012-08-18:
    DecimalToDate (mylink.basedate)
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) [,rtype (字符串)]
  • 输出 :结果(十进制)
  • 示例。 如果列 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。
DecimalToDFloat
以 dfloat 表示形式返回给定的十进制数。 自变量“fix_zero”选择性指定全零十进制值视为有效(缺省情况下,全部由零组成的十进制数视为无效)。
  • 输入 :十进制数 (decimal) [,"fix_zero"]
  • 输出 :结果(浮点数)
  • 示例。 如果列 mylink.mydec 包含十进制数 00000004.00,那么以下函数会返回 dfloat 数 4.00000000000000000E+00:
    DecimalToDFloat(mylink.mydec,"fix_zero")
    
    如果列 mylink.mydec 包含十进制数 00012344.00 ,则以下函数返回浮点数 1.23440000000000000E+04。
    DecimalToDFloat(mylink.mydec,"fix_zero")
    
    如果列 mylink.mydec 包含十进制数 00012344.120 ,则以下函数返回浮点数 1.23441200000000010E+04。
    DecimalToDFloat(mylink.mydec,"fix_zero")
    
    如果列 mylink.mydec 包含十进制数 00012344.120 ,则以下函数返回浮点数 1.23441200000000010E+04。
    DecimalToDFloat(mylink.mydec)
    
    如果列 mylink.mydec 包含十进制数 00012344.000 ,则以下函数返回浮点数 1.23440000000000000E+04。
    DecimalToDFloat(mylink.mydec)
    
DecimalToString
将给定的十进制数返回为字符串。 自变量“fix_zero”选择性指定全零十进制值视为有效(缺省情况下,全部由零组成的十进制数视为无效)。 这包括压缩十进制表示的符号位都为 0 以及都为内容数字的情况。 此强制转换仅在“fix_zero”为 true 时才视为有效。
  • 输入 :十进制数 (decimal) [,"fix_zero"]
  • 输出 :结果(字符串)
  • 示例。 如果列中 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 ,则以下函数返回字符串" 00012344.120 "。
    DecimalToString(mylink.mydec)
    
    如果列中 mylink.mydec 包含十进制数 00012344.000 ,则以下函数返回字符串" 00012344.000 "。
    DecimalToString(mylink.mydec)
    
DecimalToTime
将给定的压缩十进制数返回为时间。 您可以指定格式字符串来指定如何以十进制数形式存储时间(可选)。 缺省格式字符串为“%hh%nn%ss”,因此,例如时间 14:03:22 将存储为十进制数字 140322。 格式字符串只能指定包含数字的格式。 例如,您不能指定格式字符串,如“%hh:%nn:%ss”,因为无法在压缩十进制值中存储冒号字符 (:)。 以下标记对于与十进制值之间的转换有效:

%hh(使用 24 小时制的以两位数表示的小时数)

%nn(两位数表示的分钟数)

%ss(两位数表示的秒数)

%s s. N (两位秒数,外加允许的小数位数) 小数部分的位数为一至六位(含一和六)。

字面值数字 0 到 9 都有效。

如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。 小数点的位数不必与指定的小数位数(例如 scale = 4)完全一致。

  • 输入 :时间(time)[, 格式(string)]
  • 输出 :结果(十进制)
  • 示例 :如果 mylink.mytimedec 列包含十进制值 200658,则以下函数返回时间 20:06:58:
    DecimalToTime(mylink.mytimedec)
    如果 mylink.mytimedec 该列包含十进制值 580620,则以下函数返回时间 20:06:58:
    DecimalToTime(mylink.mytimedec, "%ss%nn%hh")
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(两位数表示的秒数)

%s s. N (两位秒数,外加允许的小数位数) 小数部分的位数为一至六位(含一和六)。

字面值数字 0 到 9 都有效。

如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。 小数点的位数不必与指定的小数位数(例如 scale = 4)完全一致。

  • 输入 :时间戳 (timestamp) [, 格式 (string)]
  • 输出 :结果(十进制)
  • 示例 :若列 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")
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.

  • 输入 :数字(浮点型),[r类型(字符串)]
  • 输出 :结果(十进制)
  • 示例。 如果列 mylink.myfloat 包含 dfloat 数 2.534,那么以下函数会返回十进制数 00000002.54:
    DFloatToDecimal(mylink.mydec,"ceil")
    
    如果列中 mylink.myfloat 包含浮点数 2.534 ,则以下函数返回十进制数 00000002.53。
    DFloatToDecimal(mylink.mydec,"floor")
    
    如果列中 mylink.myfloat 包含浮点数 2.534 ,则以下函数返回十进制数 00000002.53。
    DFloatToDecimal(mylink.mydec,"trunc_zero")
    
    如果列中 mylink.myfloat 包含浮点数 2.534 ,则以下函数返回十进制数 00000002.53。
    DFloatToDecimal(mylink.mydec,"round_inf")
    
DfloatToStringNoExp
使用指定小数位数,以无指数的字符串表示形式返回给定的 dfloat。
  • 输入 :数字(浮点数),标度(字符串)
  • 输出 :结果(字符串)
  • 示例。 如果列 mylink.myfloat 包含浮点数 2.534 ,则以下函数返回字符串 2.5:
    DfloatToStringNoExp(mylink.myfloat,2)
    
IsBase64
返回给定字符串是否为基本 64 位编码类型。
  • 输入 :源字符串(字符串)
  • 输出 :result ( int8 )
  • 示例。 如果 mylink.mystring1 包含基本 64 位编码字符串,那么以下函数将返回值 1。
    IsBase64(mylink.mystring1)
IsValid
返回给定的字符串对于给定类型是否有效。 有效类型包括"date"、"decimal[精度,小数位]"、"dfloat"、"sfloat"、" int8 ""、" int16uint8 ""、" uint16 ""、" int32 " uint32 "、"""、" int64 ""、" uint64 ""、"""、"raw"、"string"、"time"、"timestamp"、"ustring"。 对于数据类型 date、time 和 timestamp,您可以指定格式字符串(可选)。 格式字符串描述输入数据的格式与 date、time 或 timestamp 的缺省格式不同时,输入数据所使用的格式。 缺省日期格式为“%yyyy-%mm-%dd”。 时间的缺省格式为“%hh: %nn:%ss”。 时间戳的默认格式为“ %d %yyyy-%mm-d %hh:%nn: %s s”。 该功能不会记录警告。
  • 输入 :类型(字符串),测试字符串(字符串)[, 格式(字符串)]
  • 输出 :result ( int8 )
  • 示例。 如果该列 mylink.mystring 包含字符串"1",则以下函数返回值1。
    IsValid("int8",mylink.mystring)
    
    如果列 mylink.mystring 包含字符串" 380096.06 ",则以下函数返回值0。
    IsValid("int8",mylink.mystring)
    
IsValidDate
返回给定的值是否为有效的 date 类型。 该功能记录警告。
  • 输入 :测试日期(日期)
  • 输出 :result ( int8 )
  • 示例。 如果该列 mylink.mydate 包含日期 2011-09-13,则以下函数返回值 1。
    IsValidDate(mylink.mydate)
    
    如果该列 mylink.mydate 包含字符串" 380096.06 ",则以下函数返回值0,因为转换后的字符串不是有效的日期。
    IsValidDate(StringToDate (mylink.mydate))
    
IsValidDecimal
返回给定的值是否为有效的 decimal 类型。 如果将 allzerosflag 设置为 0,那么全零表示将视为无效。 缺省情况下,allzerosflag 设置为 0。
  • 输入 :testvalue(十进制)[, allzerosflag( uint8 )]
  • 输出 :result ( int8 )
  • 示例。 如果列 mylink.mynum 包含值 310007.65 ,则以下函数返回值 1。
    IsValidDecimal(mylink.mynum)
    
    如果该列 mylink.mynum 包含字符串"wake-robin",则以下函数返回值0,因为转换后的字符串不是有效的十进制数。
    IsValidDecimal(StringToDecimal (mylink.mynum))
    
IsValidTime
返回给定的时间是否为有效的 time 类型。
  • 输入 :测试时间(时间)
  • 输出 :result ( int8 )
  • 示例。 如果该列 mylink.mytime 包含时间 23:09:22,则以下函数返回值 1:
    IsValidTime(mylink.mytime)
    
    如果列 mylink.mydate 包含字符串 "IbnKayeed", ,则以下函数返回值 0,因为转换后的字符串不是有效时间。
    IsValidTime(StringToTime (mylink.mytime))
    
IsValidTimestamp
返回给定的时间戳记是否为有效的 timestamp 类型。
  • 输入 :测试时间戳(时间戳)
  • 输出 :result ( int8 )
  • 示例。 如果该列 mylink.mytimestamp 包含时间 2011-09-13 23:09:22,则以下函数返回值 1:
    IsValidTimestamp(mylink.mytimestamp)
    
    如果该列 mylink.mytimestamp 包含字符串 “one of two ”,则以下函数将返回值 0,因为转换后的字符串不是有效的日时戳。
    IsValidTimestamp(StringToTimestamp (mylink.mytimestamp))
    
MD5
通过将 MD5 消息摘要算法编码为 128 位散列值来对字符串进行编码。
  • 输入 :源字符串(字符串)
  • 输出 :结果(字符串)
  • 示例。 如果 mylink.mystring1 包含字符串 "Hello world",那么以下函数将返回 MD5 的 128 位散列值。
    MD5(mylink.mystring1)
NumToStr
将数字转换为字符串。 精度表示要写入的最大小数位数。 此功能为兼容性而保留,但不建议使用。
  • 输入 :数字(浮点数),精度( int32 )
  • 输出 :结果(字符串)
  • 示例 :如果列中 mylink.precision 包含整数 9,则以下函数返回十进制数 0.333333333:
    NumToStr(AsDouble(1)/AsDouble(3), mylink.precision)
NumToStrFixed
将数字转换为固定字符串。 精度表示要写入的最大小数位数。 此功能为兼容性而保留,但不建议使用。
  • 输入 :数字(浮点数),精度( int32 )
  • 输出 :结果(字符串)
  • 示例 :如果列中 mylink.precision 包含整数 9,则以下函数返回十进制数 0.333333333:
    NumToStr(AsDouble(1)/AsDouble(3), mylink.precision)
NumToVar
将数字转换为变体。 此功能为兼容性而保留,但不建议使用。
  • 输入 :数字(浮点型)
  • 输出 :变体(字符串)
  • 示例。 如果 mylink.mynumber 列包含浮点数 3.1415926 ,则以下函数返回变体"�e)OY%{ izXL":
    NumToVar(3.1415926)
    NumToVar(mylink.mynumber)
RawNumAt
返回指定 raw 字段中指定索引值的整数值。 索引从 0 开始。
  • 输入 :原始字段(raw),索引( int32 )
  • 输出 :result ( int32 )
  • 示例。 如果列 mylink.myraw 包含由字符串"hello"派生的原始值,则以下函数返回整数 0x68 (字符h的ASCII码):
    RawNumAt(mylink.myraw, 0)
    
    如果该列 mylink.myraw 包含由字符串"hello"派生的原始值,则以下函数将返回0,因为指定的索引超出范围:
    RawNumAt(mylink.myraw, 12)
    
RawToString
以字符串表示形式返回给定的 raw 值。 必须确保 raw 输入值包含一个字节序列,这些字节在使用输出字符串的目标字符集中为有效字符。 例如,原始值 { 0xE0 0x41 0x42 } 并非有效的 字符 UTF-8 序列,因为引导字节 之后 0xE0 应紧跟一个属于范围 [ 0x80..0xBF ] 的字节。 若向函数 RawToString 传递 { xE0 x41 x42 } 原始值,当后续访问输出字符串时,可能出现错误,因为该字符串会被视为已编码 UTF-8。
  • 输入 :原始字段(原始)
  • 输出 :结果(字符串)
  • 示例。 如果列 mylink.myraw 包含值 { 0x31 0x31 0x30 0x35 0x32 0x32 0x30 0x39 } ,则以下函数返回字符串"11052209"。
    RawNumAt(mylink.myraw)
    
序号
根据 ASCII 字符生成数字代码值。 您可以指定 allow8bits 参数来转换 8 位 ASCII 值(可选)。
  • 输入 :序列(字符)
  • 输出 :结果(数字)
  • 示例。 以下示例将字符 A 输出为 ASCII 码 65。
    Seq("A")
    
SeqAt
返回给定字符串中指定位置上字符的数字代码点值。 索引从 0 开始。 如果指定的索引超出范围,则函数返回 0。
  • 输入 :基字符串(字符串),索引 ( int32 )
  • 输出 :result ( int32 )
  • 示例。 如果列 mylink.mystring 包含字符串 "horse",那么以下函数会返回值 0x6F(即,字符 o 对应的 ASCII 码值):
    SeqAt(mylink.mystring, 1)
    
StringToBase64
使用基本 64 位编码对字符串进行编码。
  • 输入 :源字符串(字符串)
  • 输出 :结果(字符串)
  • 示例。 如果 mylink.mystring1 包含字符串 "Hello world" ,那么以下函数将返回基本 64 位编码字符串。
    StringToBase64(mylink.mystring1)
StrToNum
将字符串转换为数字。 此功能为兼容性而保留,但不建议使用。
  • 输入 :字符串(字符串)
  • 输出 :结果(浮点数)
  • 示例。 如果 mylink.mystring 包含值"1",则以下函数返回值1:
    StrToNum("1")
    StrToNum(mylink.mystring)
StrToVar
将字符串转换为变体。 此功能为兼容性而保留,但不建议使用。
  • 输入 :字符串(字符串)
  • 输出 :结果(字符串)
  • 示例。 如果列中 mylink.mystring 包含"!@#$%"值,则以下函数返回"�!@#$%",该值包含通过的Unicode字符。
    StrToVar("!@#$%")
    StrToVar(mylink.mystring)
StringToDate
以给定的格式返回给定字符串表示的日期。 如果字符串包含缺省格式 yyyy-mm-dd 的日期,那么不必指定格式字符串。
  • 输入 :字符串 (string) [,格式 (string)]
  • 输出 :结果(日期)
  • 示例 :如果列中 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")
    
    通过区域设置标记可控制用于确定日期和月份名称设置的区域设置。 格式如下:
    %(L,'locale')
    指定 locale 使用ICU支持的命名 language_COUNTRY.variant 约定设置的区域设置参数。 你可以将区域设置标记与时间格式结合使用,例如格式字符串:
    StringToDate('2022November', '%yyyy%(L,"de")%mmmm')
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),[rtype (string)]
  • 输出 :结果(十进制)
  • 示例。 如果列 mylink.mystring 包含字符串 "19982.22",并且目标定义成精度为 7 且小数位数为 2,那么以下函数会返回十进制值 19983.22:
    StringToDecimal(mylink.mystring)
    
    在下面的示例中,列 mylink.mystring 包含字符串 " 19982.2276 ", 目标被定义为精度为 7,精度为 2:
    • 该函数 StringToDecimal(mylink.mystring,"ceil") 返回十进制数。 19983.23
    • 该函数 StringToDecimal(mylink.mystring,"floor") 返回十进制数。 19983.22
    • 该函数 StringToDecimal(mylink.mystring,"round_inf") 返回十进制数。 19983.23
    • 该函数 StringToDecimal(mylink.mystring,"trunc_zero") 返回十进制数。 19983.22
StringToRaw
以 raw 表示形式返回字符串。
  • 输入 :字符串(字符串)
  • 输出 :结果(原始)
  • 示例。 如果列 mylink.mystring 包含字符串"hello",且目标列被定义为二进制类型,则以下函数返回值 { 0x68 0x65 0x6C 0x6C 0x6F }。
    StringToRaw(mylink.mystring)
    
StringToTime
返回给定字符串的时间表示。
  • 输入 :字符串 (string),[格式 (string)]
  • 输出 :结果(时间)
  • 示例 :如果列中 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)")
    
StringToTimestamp
返回给定字符串的时间表示。
  • 输入 :字符串 (字符串) [格式 (字符串)]
  • 输出 :结果(时间)
  • 示例 :如果列 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)")
    
StringToUstring
返回给定字符串的 ustring,可以选择使用指定的映射(否则,将使用项目缺省值)。
  • 输入 :字符串 (string),[地图名称(string)]
  • 输出 :结果(ustring)
  • 示例 :如果列中 mylink.mystring 包含字符串"11052009",则以下函数返回ustring"11052009"
    StringToUstring(mylink.mystring)
    
TimestampToDate
返回给定时间戳记的日期。
  • 输入 :时间戳(时间戳)
  • 输出 :结果(日期)
  • 示例 :若列 mylink.mytimestamp 中包含时间戳 1958-08-18 20:06:58,则以下函数将返回日期 1958-08-18:
    TimestampToDate(mylink.mytimestamp)
    
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(两位数表示的秒数)

%s s. N (两位秒数,外加允许的小数位数) 小数部分的位数为一至六位(含一和六)。

字面值数字 0 到 9 都有效。

如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。 小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。

  • 输入 :时间戳 (timestamp) [, 格式 (string)]
  • 输出 :结果(十进制)
  • 示例 :若列 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")
TimestampToString
返回给定时间戳记的字符串。
  • 输入 :时间戳(timestamp)[格式(字符串)]
  • 输出 :结果(字符串)
  • 示例 :如果列中 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")
    
TimestampToTime
根据给定的时间戳返回一个时间。
  • 输入 :时间戳(时间戳)
  • 输出 :结果(时间)
  • 示例 :若列 mylink.mytimestamp 中包含时间戳 1958–08–18 20:06:58,则该函数返回时间 20:06:58
    TimestampToTime(mylink.mytimestamp)
    
TimeToDecimal
将给定的时间返回为压缩十进制。 您可以指定格式字符串来指定如何以十进制数形式存储时间(可选)。 缺省格式字符串为“%hh%nn%ss”,因此,例如时间 14:03:22 将存储为十进制数字 140322。 格式字符串只能指定包含数字的格式。 例如,您不能指定格式字符串,如“%hh:%nn:%ss”,因为无法在压缩十进制值中存储冒号字符 (:)。 以下标记对于与十进制值之间的转换有效:

%hh(使用 24 小时制的以两位数表示的小时数)

%nn(两位数表示的分钟数)

%ss(两位数表示的秒数)

%s s. N (两位秒数,外加允许的小数位数) 小数部分的位数为一至六位(含一和六)。

字面值数字 0 到 9 都有效。

如果指定的格式包含微秒(例如,%ss.4),那么将在十进制值中推断小数点的位置。 小数点的位置不必与指定的十进制小数位一致(例如,小数位 = 4)。

  • 输入 :时间(time)[, 格式(string)]
  • 输出 :结果(十进制)
  • 示例 :如果 mylink.mytime 列中包含时间 20:06:58,则以下函数返回十进制值 200658:
    TimeToDecimal(mylink.mytime)
    如果该列 mylink.mytime 包含时间 20:06:58,则以下函数返回十进制值 580620:
    TimeToDecimal(mylink.mytime, "%ss%nn%hh")
TimeToString
返回给定时间的字符串。
  • 输入 :时间戳(timestamp)[格式(字符串)]
  • 输出 :结果(时间)
  • 示例 :如果 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")
    
UniChar
根据Unicode值生成单个字符。
  • 输入 :Unicode 编号(整数)
  • 输出 :来自Unicode的单个字符(字符串)
  • 示例 :如果 mylink.unicode 列中包含整数 241,则以下函数返回字符串 "ñ":
    UniChar(mylink.unicode)
    
UniSeq
根据表达式生成一个Unicode值。
  • 输入 :表达式(字符串)
  • 输出 :unicode值(字符串)
  • 示例 :如果列中 mylink.unicode 包含字符串"û",则以下函数返回Unicode整数251:
    UniSeq(mylink.expression)
UstringToString
返回给定 ustring 的字符串,可以选择使用指定的映射(否则,将使用项目缺省值)。
  • 输入 :字符串(ustring)[, 映射名称(字符串)]
  • 输出 :结果(字符串)
  • 示例 :如果 mylink.myustring 列包含字符串 "11052009",则以下函数返回字符串 "11052009":
    UstringToString(mylink.myustring)
    
VarToBool
将变体转换为布尔值。 此功能为兼容性而保留,但不建议使用。
  • 输入 :变体(字符串)
  • 输出 :result ( int32 )
  • 示例。 如果 mylink.myvariant 列包含变体"Test",则以下函数返回结果值1:
    VarToBool("Test")
    VarToBool(mylink.myvariant)
VarToNum
将变体转换为数字。 此功能为兼容性而保留,但不建议使用。
  • 输入 :变体(字符串)
  • 输出 :数字(浮点数)
  • 示例。 如果列 mylink.myvariant 包含变体 NumToVar(3.1415926),则以下函数返回该数字 3.14159:
    VarToNum(NumToVar(3.1415926))
    VarToNum(mylink.myvariant)
VarToStr
将变量转换为字符串。 此功能为兼容性而保留,但不建议使用。
  • 输入 :变体(字符串)
  • 输出 :结果(字符串)
  • 示例。 如果列 mylink.myvariant 包含变体 StrToVar("!@#$%" ),则以下函数返回结果值!@#$%:
    VarToStr(StrToVar("!@#$%"), 6)
    VarToStr(mylink.myvariant, 6)
VarToStrFixed
将变量转换为固定字符串。
  • 输入 :变体(字符串),精度(数字)
  • 输出 :结果(字符串)
  • 示例。 如果 mylink.myvariant 列包含字符串"Hello",则以下函数返回结果值"Hello":
    VarToStrFixed("Hello", 1)
    VarToStrFixed(mylink.myvariant, 1)