ZONED( ) 函数

将数值数据转换为字符数据并将前导零添加至输出。

语法

ZONED(数值长度

参数

名称 类型 描述
数值

数值

要转换为字符串的数值。

说明

如果您想要向包含数值字符串的字符值添加前导零,您必须在使用该值作为 ZONED( ) 的输入之前使用 VALUE( ) 函数将该字符转换至数值数据类型。要了解更多信息,请参考VALUE( ) 函数

长度 数值

输出字符串的长度。

输出

字符。

示例

基本示例

整数输入

返回“235”:

ZONED(235, 3)

返回“00235”,因为长度大于数量中的数字个数,因此两个前导零被添加到结果中:

ZONED(235, 5)

返回“35”,因为长度小于数量中的数字个数,所以从结果中截去最左侧的数字:

ZONED(235, 2)

小数输入

返回“23585”,因为区域化数据格式不支持小数点:

ZONED(235.85, 5)

负数输入

返回“64489M”,因为该数字是负数,并且“M”表示最后一个数字 4:

ZONED(-6448.94, 6)

返回“489J”,因为长度小于数量中的数字个数,所以从结果中截去两个最左侧的数字,该数字是负数,且“J”表示最后一个数字 1:

ZONED(-6448.91, 4)

高级示例

向包含数字的字符域添加前导零

Employee_Number 域包含值 "254879"。您需要将该值转换为具有前导零的 10 数字字符串。

提示

在使用数值作为 ZONED() 的输入之前,必须使用 VALUE() 函数将字符转换为数值数据。

COMMENT 返回 "0000254879"
ASSIGN v_str_length = 10
ASSIGN v_num_decimals = 0
ZONED(VALUE(Employee_Number, v_num_decimals), v_str_length)

在联接表时协调键域

您有两个表,ArCustomer,您需要按 CustNo 域连接它们以做进一步分析。这两个表都具有一个 CustNo 域,但数据格式不同:

  • Ar 是数值域(例如,235)
  • Customer 是一个包含 5 个字符的域,并且为数字填充前导零(例如,"00235")

要在联接时协调域以使数据类型和长度相等,您可以使用 ZONED( ) 函数将 Ar 键域 CustNo 转换为长度为 5 的字符域,以便它匹配 Customer 中键域的格式:

OPEN 应收账款 PRIMARY
OPEN 客户 SECONDARY
JOIN PKEY ZONED(CustNo,5) FIELDS CustNo Due Amount SKEY CustNo UNMATCHED TO Ar_Cust OPEN PRESORT SECSORT

备注

工作原理

该函数将数值数据转换为字符数据,并向输出添加前导零。该函数常用于调整需要前导零的域,例如支票编号、采购订单编号及发票编号域。

何时使用 ZONED( )

使用该函数可将正数值转换为包含前导零的字符值。这对于规范化要用作关键字域的域中的数据来说非常有用。

例如,如果一个表在一个数值域中包含形式为 100 的发票编号,而另一个表中的一个字符域中包含形式为 "00100" 的发票编号,则可以使用 ZONED( ) 将数值 100 转换为字符值 "00100"。这样,您就可以比较相似的发票编号。

字符串长度和返回值

长度值大于数量中的数字个数时,向输出值添加前导零。当长度小于数值中的数字个数时,从左侧截断输出。如果数量值的长度与长度相同,则不会添加零。

小数

Zoned 数据格式不包括显式小数点。

负数

如果输入数量是负数,则最右侧的数字将在结果中显示为字符:

  • "}" 表示 0
  • "J" 和 "R" 之间的字母表示数字 1 到 9

ZONED( ) 和 Analytics 的 Unicode 版

如果您使用 Unicode 版本的 Analytics,则需要使用 BINTOSTR( ) 函数来正确显示 ZONED( ) 函数的返回值。如果您想要把 ZONED( ) 函数的返回值用作另一个函数的参数,也需要使用 BINTOSTR( ) 函数。

ACL 脚本指南 14.1