将数字格式化并解析为字符串

对于字符串数据类型和数字数据类型之间的转换,您可以在 CAST 函数的 FORMAT 参数中提供一个可选的格式化表达式。对于字符串型的转换,格式化表达式会定义如何解析源字符串以满足目标数据类型的要求。对于目标字符串型的转换,它定义源表达式中的数据在目标字符串中如何格式化。

您可以为以下数字转换指定 FORMAT 表达式。(将 dateTime 格式化和解析为字符串中描述了如何为日期/时间转换指定 FORMAT 表达式。)
  • 从任何字符串型(BIT、BLOB 或 CHARACTER)转换为:
    • DECIMAL
    • FLOAT
    • INTEGER
  • 从上述项目符号对应的任何数字类型转换到任何字符串型(BIT、BLOB 或 CHARACTER)。
格式化表达式由三部分构成:
  1. 定义正数的 subpattern
  2. 定义负数的可选 subpattern。(如果只定义了一个 subpattern,则负数使用正模式,用减号作为前缀。)
  3. 可选的参数 groupsepdecsep

语法

参数

chars

零个或多个字符组成的序列。可以使用任何字符,但表 1 中列出的特殊字符除外

decsep

用作整数部分和小数部分之间分隔符的一个或多个字符(小数分隔符)。缺省的小数分隔符是句点(.)。

digits

表 1 中列出的一个或多个数字标记(0 # - + , . )组成的序列。

groupsep

用于分隔整数集群,以使大数更易读的一个或多个字符(组合分隔符)。缺省的组合分隔符为空(即,没有数字组合或分隔的组合)。

数字通常是以千为单位组合,但模式或语言环境可以重新定义它。有两种组合大小:
主组合大小
用于最小的整数位。
次组合大小
用于所有其他整数位。
在大多数情况下,主组合和次组合大小相同,但也可以不同。例如,如果使用的模式是 #,##,##0,则主组合大小是 3,次组合大小是 2。数字 123456789 将变成字符串“12,34,56,789”。

如果使用多个组合分隔符(如前一示例中),则最右边的分隔符定义主大小,右起第二个分隔符定义次大小。

subpattern

subpattern 由以下部分构成:
  1. 一个可选的前缀(chars
  2. 一个表示整个数的必需模式
  3. 一个表示小数位的可选模式
  4. 一个表示指数(将前述数字相乘的幂)的可选模式
  5. 一个可选的后缀(chars
subpattern 中的第 2、3 和 4 部分由下表中的标记定义。
表 1. 定义用于数字/字符串转换的格式化子模式的标记
标记 表示
0 任何数字,包括前导零。
# 任何数字,不包括前导零。(请参阅此表后面关于 0 和 # 之间区别的说明。)
. 小数分隔符。
+ 正数的前缀。
- 负数的前缀。
, 组合分隔符。
E/e 数字与指数之间的分隔符。
; 子模式边界。
' 引号,用于为特殊字符加引号。如果输出中需要引号,必须使用两个('')。
* 填充说明符。星号后面的字符用于填充数字以达到格式模式的长度。

# 和 0 字符用于数字替换,它们的区别是如果没有数字替换 # 字符,则会删除该字符。例如,由模式 #,##0.00 格式化的 10 结果是“10.00”,但由 0,000.00 格式化时结果是“0,010.00”。

要指定填充字符,请使用星号。将星号放在两个 chars 区域(前缀和后缀)中的任何一个区域时,紧跟在它后面的字符用于填充输出。填充只能指定一次。例如,应用于 1234 的 *x#,###,##0.00 将生成“xxx1,234.00”。如果应用于 1234567,结果将是“1,234,567.00”。

格式化模式的示例

表 2. 格式化模式的示例,显示数字输入样本的字符串输出
模式 输入的数字 输出的字符串
+###,##0.00;-###,###,##0.00:groupsep='':decsep=, 123456789.123 “+123'456'789,12”
##0.00 1000000 “1000000.00”
##0.00 3.14159265 “3.14”
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak05615_