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)
在联接表时协调键域
您有两个表,Ar 和 Customer,您需要按 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( ) 函数。