GRAPHIC 标量函数
GRAPHIC 函数返回不同数据类型的值的固定长度图形字符串表示。
整数到图形
十进制到图形
浮点到图形
十进制浮点到图形
字符到图形
图形到图形
日期时间到图形
布尔值到 vargraphic
该模式是 SYSIBM。 在函数特征符中使用关键字时,不能将函数名指定为限定名。
- Integer to graphic
- integer-expression
- 返回整数数据类型 (SMALLINT , INTEGER 或 BIGINT) 的值的表达式。
结果是采用 SQL 整数常量形式的 integer-expression 的固定长度图形字符串表示。 结果由 n 个双字节字符组成,这些字符表示自变量中的有效数字,如果自变量为负数,那么以减号开头。 结果左对齐。- 如果第一个自变量是小整数,那么结果的长度为 6。
- 如果第一个自变量是大整数,那么结果的长度为 11。
- 如果第一个自变量是大整数,那么结果的长度为 20。
结果的代码页是该部分的 DBCS 代码页。
- Decimal to graphic
- 十进制表达式
- 返回十进制数据类型的值的表达式。 DECIMAL 标量函数可用于更改精度和小数位。
- 十进制字符
- 指定用于对结果图形字符串中的十进制数字进行定界的双字节字符常量。 双字节字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是采用 SQL 十进制常量形式的 decimal-expression 的固定长度图形字符串表示。 结果的长度为 2 +p,其中 p 是 decimal-expression的精度。 不包含前导零。 包含尾部零。 如果 decimal-expression 为负数,那么结果的第一个双字节字符为减号; 否则,第一个双字节字符为数字或十进制字符。 如果 decimal-expression 的小数位为零,那么不会返回十进制字符。 如果结果中的双字节字符数小于定义的结果长度,那么结果将 在右边填充空白。
结果的代码页是该部分的 DBCS 代码页。
- Floating-point to graphic
- 浮点表达式
- 返回浮点数据类型 (DOUBLE 或 REAL) 的值的表达式。
- 十进制字符
- 指定用于对结果图形字符串中的十进制数字进行定界的双字节字符常量。 双字节字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是采用 SQL 浮点常量形式的 浮点表达式 的固定长度图形字符串表示。 结果的长度为 24。 结果是可表示 浮点表达式 的值的最小双字节字符数,使得尾数由后跟句点和数字序列的零以外的个位数组成。 如果 浮点表达式 为负数,那么结果的第一个双字节字符是减号; 否则,第一个双字节字符是数字。 如果 浮点表达式 为零,那么结果为 0E0。 如果结果中的双字节字符数小于 24 ,那么结果将 在右边填充空白。
结果的代码页是该部分的 DBCS 代码页。
- Decimal floating-point to graphic
- decimal-浮点表达式
- 返回十进制浮点数据类型 (DECFLOAT) 的值的表达式。
- 十进制字符
- 指定用于对结果图形字符串中的十进制数字进行定界的双字节字符常量。 双字节字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是采用 SQL 十进制浮点常量形式的 decimal-floating-point-expression 的固定长度图形字符串表示。 结果的长度属性为 42。 结果是可以表示 decimal-浮点表达式的值的最小双字节字符数。 如果 decimal-浮点表达式 为负数,那么结果的第一个双字节字符为减号; 否则,第一个双字节字符为数字。 如果 decimal-浮点表达式 为零,那么结果为 0。
如果 decimal-浮点表达式 的值是特殊值 Infinity , sNaN 或 NaN,那么将分别返回字符串 G 'INFINITY' , G 'SNAN' 和 G 'NAN'。 如果特殊值为负数,那么结果的第一个双字节字符为负号。 十进制浮点特殊值 sNaN 在转换为字符串时不会产生警告。 如果结果中的双字节字符数小于 42 ,那么结果将 在右边填充空白。
结果的代码页是该部分的 DBCS 代码页。
- Character to graphic
- 在 Unicode 数据库中:
- character-expression
- 返回内置字符串数据类型的值的表达式。 表达式不能是 FOR BIT DATA 子类型 (SQLSTATE 42846)。
- integer
- 一个整数常量,用于指定生成的固定长度图形字符串的长度属性。 该值必须介于 0 与 结果的字符串单位中 GRAPHIC 数据类型的最大长度之间。如果未指定第二个自变量:
- 如果 character-expression 是空字符串常量,那么结果的长度属性为 0。
- 否则,结果的长度属性为以下值中的较低值:
- 结果的字符串单元中 GRAPHIC 数据类型的最大长度
- 第一个自变量的长度属性
结果是从 character-expression转换而来的固定长度图形字符串。 结果的长度属性由 integer的值确定。
结果的实际长度与结果的长度属性相同。
如果转换为图形字符串的 character-expression 的长度小于结果的长度属性,那么将使用空白填充结果的长度属性。
如果转换为图形字符串的 character-expression 的长度大于结果的长度属性,那么存在以下几种情况:- 如果结果的字符串单元是 CODEUNITS32,那么将执行截断。 如果仅截断空白字符,并且 character-expression 为 CHAR 或 VARCHAR ,那么不会返回警告。 否则,将返回警告 (SQLSTATE 01004)。
- 如果指定了 integer ,那么将执行截断。 如果仅截断空白字符,并且 character-expression 为 CHAR 或 VARCHAR ,那么不会返回警告。 否则,将返回警告 (SQLSTATE 01004)。 当输出字符串被截断时,使得最后一个字符是高替代字符时,该替代字符将转换为空白字符 (X'0020 ')。 请勿依赖此行为,因为它可能会在将来的发行版中发生更改。
- 如果未指定 integer ,那么将返回错误 (SQLSTATE 22001)。
有关转换过程的详细信息,请参阅 VARGRAPHIC 标量函数。
- Graphic to graphic
- 图形表达式
- 返回作为图形字符串数据类型的内置值的表达式。
- integer
- 一个整数常量,用于指定生成的固定长度图形字符串的长度属性。 该值必须介于 0 与 结果的字符串单位中 GRAPHIC 数据类型的最大长度之间。如果未指定第二个自变量:
- 如果 graphic-expression 是空字符串常量,那么结果的长度属性为 0。
- 否则,结果的长度属性为以下值中的较低值:
- 结果的字符串单元中 GRAPHIC 数据类型的最大长度
- 第一个自变量的长度属性
结果是固定长度的图形字符串。 结果的长度属性由 integer的值确定。
结果的实际长度与结果的长度属性相同。
如果 graphic-expression 的长度小于结果的长度属性,那么将使用空白填充结果的长度属性。
如果 graphic-expression 的长度大于结果的长度属性,那么存在以下几种情况:- 如果结果的字符串单元是 CODEUNITS32,那么将执行截断。 如果仅截断空白字符,并且 graphic-expression 为 GRAPHIC 或 VARGRAPHIC ,那么不会返回任何警告。 否则,将返回警告 (SQLSTATE 01004)。
- 如果指定了 integer ,那么将执行截断。 如果仅截断空白字符,并且 graphic-expression 为 GRAPHIC 或 VARGRAPHIC ,那么不会返回任何警告。 否则,将返回警告 (SQLSTATE 01004)。 在 Unicode 数据库中,当输出字符串被截断,使得最后一个字符是高代用字符时,该代用字符将转换为空白字符 (X'0020 ')。 请勿依赖此行为,因为它可能会在将来的发行版中发生更改。
- 如果未指定 integer ,并且 graphic-expression 为 VARGRAPHIC ,那么截断行为如下所示:
- 如果必须仅截断空白字符,那么将执行截断,而不会返回警告。
- 如果必须截断非空白字符,那么将返回错误 (SQLSTATE 22001)。
- 如果未指定 integer ,并且 graphic-expression 为 DBCLOB ,那么将返回错误 (SQLSTATE 22001)。
- Datetime to graphic
- datetime-expression
- 具有下列其中一种数据类型的表达式:
- DATE
- 结果是采用第二个自变量指定的格式的日期的图形字符串表示。 结果的长度为 10。 如果指定了第二个自变量并且该自变量不是有效值,那么将返回错误 (SQLSTATE 42703)。
- TIME
- 结果是以第二个自变量指定的格式表示时间的图形字符串。 结果的长度为 8。 如果指定了第二个自变量并且该自变量不是有效值,那么将返回错误 (SQLSTATE 42703)。
- TIMESTAMP
- 结果是时间戳记的图形字符串表示。 如果 datetime-expression 的数据类型为 TIMESTAMP (0) ,那么结果的长度为 19。 如果 datetime-expression 的数据类型为 TIMESTAMP (n) ,其中 n 介于 1 和 12 之间,那么结果的长度为 20 +n。 否则,结果的长度为 26。
字符串的代码页是 部分的代码页。
- Boolean to graphic
- 布尔表达式
- 返回布尔值 (TRUE 或 FALSE) 的表达式。 结果为 "TRUE" (请注意 E 后面的空白) 或 "FALSE"。
结果
- 整数 (仅适用于 Unicode 数据库) ,如果第一个自变量是 SMALLINT , INTEGER 或 BIGINT
- 十进制数 (仅适用于 Unicode 数据库) (如果第一个自变量是十进制数)
- 双精度浮点数 (仅适用于 Unicode 数据库) ,如果第一个自变量是 DOUBLE 或 REAL
- 十进制浮点数 (仅适用于 Unicode 数据库) ,如果自变量是十进制浮点数 (DECFLOAT)
- 一个字符串(如果第一个参数是任何类型的字符串)
- 一个图形字符串(如果第一个参数是任何类型的图形字符串)
- 日期时间值 (仅适用于 Unicode 数据库) (如果第一个自变量是 DATE , TIME 或 TIMESTAMP)
- 一个布尔值(TRUE 或 FALSE)
- CODEUNITS16,如果第一个自变量是字符串或字符串单位为 OCTETS 或 CODEUNITS16的图形字符串。
- CODEUNITS32,如果第一个自变量是字符串或字符串单位为 CODEUNITS32的图形字符串。
- 由环境的缺省字符串单元确定 (如果第一个自变量不是字符串或图形字符串)。
如果第一个参数可以为空值,那么结果可以为空值;如果第一个参数为空值,则结果为空值。
注意
- 提高应用程序的可移植性: 如果第一个自变量是数字,或者如果第一个自变量是字符串并且指定了长度自变量,请使用 CAST 规范 而不是此函数来提高应用程序的可移植性。
示例
- 示例 1: EDLEVEL 列定义为 SMALLINT。 以下内容以固定长度图形字符串的形式返回值。
生成值 G "18"。SELECT GRAPHIC(EDLEVEL) FROM EMPLOYEE WHERE LASTNAME = 'HAAS' - 示例 2: SALARY 和 COMM 列定义为 DECIMAL ,精度为 9 ,小数位为 2。 使用逗号十进制字符返回员工 Haas 的总收入。
生成值 G '56970,00'。SELECT GRAPHIC(SALARY + COMM, ',') FROM EMPLOYEE WHERE LASTNAME = 'HAAS' - 示例 3: 以下语句返回值为 "TRUE" 的数据类型 GRAPHIC 字符串。
values GRAPHIC(3=3) - 示例 4: 以下语句返回值为 "FALSE" 的数据类型为 GRAPHIC 的字符串。
values GRAPHIC(3>3)
