CHAR 标量函数
CHAR 函数返回不同数据类型的值的固定长度字符串表示。
整数到 CHAR
十进制到 CHAR
浮点到 CHAR
十进制浮点数到 CHAR
字符串到 CHAR
图形字符串到 CHAR
二进制字符串到 CHAR
CHAR 的日期时间
布尔值到 CHAR
该模式是 SYSIBM。 在函数特征符中使用关键字时,不能将函数名指定为限定名。 SYSFUN.CHAR(浮点表达式) 特征符继续可用。 在这种情况下,十进制字符区分语言环境,因此根据数据库服务器的语言环境返回句点或逗号。
- 整数到 CHAR
- 整数表达式
- 返回整数数据类型 (SMALLINT , INTEGER 或 BIGINT) 的值的表达式。
结果是以 SQL 整数常量的形式 固定长度 字符串表示 integer-expression 。 结果由 n 个字符组成,这些字符表示自变量中的有效数字,如果自变量为负数,那么以减号开头。 结果左对齐。 如果第一个自变量的数据类型为:- SMALLINT ,结果长度为 6
- INTEGER ,结果的长度为 11
- BIGINT ,结果长度为 20
结果的代码页是 部分的代码页。
- 十进制到 CHAR
- 十进制表达式
- 返回十进制数据类型的值的表达式。 如果需要不同的精度和小数位,可以先使用 DECIMAL 标量函数来进行更改。 十进制字符
- 指定用于对结果字符串中的十进制数字进行定界的单字节字符常量。 字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是采用 SQL 十进制常量形式的 decimal-expression 的固定长度字符串表示。 结果的长度为 2 +p,其中 p 是 decimal-expression的精度。 不包含前导零。 包含尾部零。 如果 decimal-expression 为负数,那么结果的第一个字符为减号; 否则,第一个字符为数字或十进制字符。 如果 decimal-expression 的小数位为零,那么不会返回十进制字符。 如果结果中的字节数小于定义的结果长度,那么将在右边使用 single-byte 空白填充结果。
结果的代码页是 部分的代码页。
- 浮点到 CHAR
- 浮点表达式
- 返回浮点数据类型 (DOUBLE 或 REAL) 的值的表达式。 十进制字符
- 指定用于对结果字符串中的十进制数字进行定界的单字节字符常量。 字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是采用 SQL 浮点常量形式的 浮点表达式 的固定长度字符串表示。 结果的长度为 24。 结果是可以表示 浮点表达式 的值的最小字符数,使得尾数由后跟句点和数字序列的除零以外的个位数组成。 如果 浮点表达式 为负数,那么结果的第一个字符为减号; 否则,第一个字符为数字。 如果 浮点表达式 为零,那么结果为 0E0。 如果结果中的字节数小于 24 ,那么将在右边使用 single-byte 空白填充结果。
结果的代码页是 部分的代码页。
- 十进制浮点数到 CHAR
- decimal-浮点表达式
- 返回十进制浮点数据类型 (DECFLOAT) 的值的表达式。 十进制字符
- 指定用于对结果字符串中的十进制数字进行定界的单字节字符常量。 字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是以 SQL 十进制浮点常量的形式表示 decimal-floatpoint-expression 的固定长度字符串。 结果的长度属性为 42。 结果是可以表示 decimal-浮点表达式的值的最小字符数。 如果 decimal-浮点表达式 为负数,那么结果的第一个字符为减号; 否则,第一个字符为数字。 如果 decimal-浮点表达式 为零,那么结果为 0。
如果decimal-floating-point-expression的值是特殊值 Infinity、sNaN,或NaN,分别返回字符串 "INFINITY"、"SNAN "和 "NAN"。 如果特殊值为负数,那么结果的第一个字符是减号。 十进制浮点特殊值sNaN转换为字符串时不会产生警告。 如果结果中的字符数小于 42 ,那么将在右边用 single-byte 空格填充结果。
结果的代码页是该节的代码页。
- 字符串到 CHAR
- character-expression
- 返回内置字符串数据类型的值的表达式。 integer
- 一个整数常量,用于指定生成的固定长度字符串的长度属性。 该值必须介于 0 与结果的字符串单位中 CHAR 数据类型的最大长度之间。如果未指定第二个自变量:
- 如果 character-expression 是空字符串常量,那么结果的长度属性为 0。
- 否则,结果的长度属性为以下值中的较低值:
- CHAR 数据类型的最大长度 (以结果的字符串单位为单位)
- 第一个自变量的长度属性。
结果是一个固定长度的字符串。 如果 character-expression 为 FOR BIT DATA ,那么结果为 FOR BIT DATA。
结果的长度与结果的长度属性相同。 如果 character-expression 的长度为:- 小于结果的长度属性,将结果填充空白,直到结果的长度属性
- 大于结果的长度属性:
- 如果结果的字符串单元是 CODEUNITS32,那么将执行截断。 如果仅截断空白字符,并且 character-expression 为 CHAR 或 VARCHAR ,那么不会返回警告。 否则,将返回警告 (SQLSTATE 01004)。
- 如果指定了 integer ,那么将执行截断。 如果仅截断空白字符,并且 character-expression 为 CHAR 或 VARCHAR ,那么不会返回警告。 否则,将返回警告 (SQLSTATE 01004)。 当多字节字符的部分被截断时,该部分字符将被替换为空白字符。 请勿依赖此行为,因为它可能会在将来的发行版中发生更改。
- 如果未指定 integer 并且 character-expression 为 VARCHAR ,那么截断行为为:
- 如果必须仅截断空白字符,那么将执行截断而不返回警告。
- 如果必须截断非空白字符,那么将返回错误 (SQLSTATE 22001)。
- 如果未指定 integer 并且 character-expression 为 CLOB ,那么将返回错误 (SQLSTATE 22001)。
- 图形字符串到 CHAR
- 图形表达式
- 返回内置图形字符串数据类型的值的表达式。 integer
- 一个整数常量,用于指定生成的固定长度字符串的长度属性。 该值必须介于 0 与结果的字符串单位中 CHAR 数据类型的最大长度之间。如果未指定第二个自变量:
- 如果 graphic-expression 是空字符串常量,那么结果的长度属性为 0。
- 如果 graphic-expression 的字符串单元为 CODEUNITS32,那么结果的长度属性为以下值中的较低值:
- CHAR 数据类型的最大长度 (以结果的字符串单位为单位)。
- 第一个自变量的长度属性。
- 否则,结果的长度属性为以下值中的较低值:
- CHAR 数据类型的最大长度 (以结果的字符串单位为单位)。
- 3 * 第一个自变量的长度属性。
结果是从 graphic-expression转换的固定长度字符串。 结果的长度与结果的长度属性相同。
如果转换为字符串的 graphic-expression 的长度为:- 小于结果的长度属性时,将用空白填充结果,直到结果的长度属性为止。
- 大于结果的长度属性:
- 如果结果的字符串单元是 CODEUNITS32,那么将执行截断。 如果仅截断空白字符,并且 graphic-expression 为 GRAPHIC 或 VARGRAPHIC ,那么不会返回任何警告。 否则,将返回警告 (SQLSTATE 01004)。
- 如果指定了 integer 并且 graphic-expression 是 GRAPHIC 或 VARGRAPHIC ,那么将执行截断而不返回警告。
- 如果指定了 integer 并且图形表达式是 DBCLOB ,那么将执行截断并返回警告 (SQLSTATE 01004)。
- 如果未指定 integer ,那么将返回错误 (SQLSTATE 22001)。
- 二进制字符串到 CHAR
- 二进制表达式
- 返回内置二进制字符串数据类型的值的表达式。 integer
- 一个整数常量,用于指定生成的固定长度字符串的长度属性。
结果是固定长度的 FOR BIT DATA 字符串,必要时用空格填充。
- CHAR 的日期时间
- datetime-expression
- 具有下列其中一种数据类型的表达式:
- 日期
- 结果是以第二个自变量指定的格式表示日期的字符串。 结果的长度为 10。 如果指定了第二个自变量并且该自变量不是有效值,那么将返回错误 (SQLSTATE 42703)。
- 时间
- 结果是时间的字符串表示,采用第二个自变量指定的格式。 结果的长度为 8。 如果指定了第二个自变量并且该自变量不是有效值,那么将返回错误 (SQLSTATE 42703)。
- TIMESTAMP
- 结果是时间戳记的字符串表示。 如果 datetime-expression 的数据类型为 TIMESTAMP (0) ,那么结果的长度为 19。 如果 datetime-expression 的数据类型为 TIMESTAMP (n) ,其中 n 介于 1 和 12 之间,那么结果的长度为 20 +n。 否则,结果的长度为 26。 第二个自变量不适用,不得指定 (SQLSTATE 42815)。
结果的代码页是 部分的代码页。
- 具有下列其中一种数据类型的表达式:
- 布尔值到 CHAR
- 布尔表达式
- 返回布尔值 (TRUE 或 FALSE) 的表达式。 结果为 "TRUE" (请注意 E 后面的空白) 或 "FALSE"。
结果
- 一个整数(如果第一个参数是 SMALLINT、INTEGER 或 BIGINT)
- 一个十进制数(如果第一个参数是十进制数)
- 一个双精度浮点数(如果第一个参数是 DOUBLE 或 REAL)
- 十进制浮点数 (如果第一个自变量是 DECFLOAT)
- 一个字符串(如果第一个参数是任何类型的字符串)
- 图形字符串 (仅限 Unicode 数据库) ,如果第一个自变量是任何类型的图形字符串
- 一个日期时间值(如果第一个参数是 DATE、TIME 或 TIMESTAMP)
- 一个布尔值(TRUE 或 FALSE)
- OCTETS ,如果第一个自变量是字符串或字符串单位为 OCTETS , CODEUNITS16或双字节的图形字符串。
- CODEUNITS32,如果第一个自变量是字符串或字符串单位为 CODEUNITS32的图形字符串。
- 由环境的缺省字符串单元确定 (如果第一个自变量不是字符串或图形字符串)。
- 如果输入是字符串,那么部分字符将替换为一个或多个空格
- 如果输入是图形字符串,那么部分字符将替换为空字符串
如果第一个自变量可以为空,那么结果可以为空。 如果第一个自变量为空,那么结果为空值。
注意
- 提高应用程序的可移植性: 如果第一个自变量是数字,或者如果第一个自变量是字符串且指定了长度自变量,请使用 CAST 规范 而不是此函数来提高应用程序的可移植性。
- 十进制到字符和前导零: 在 9.7之前的版本中,此函数的十进制输入结果包括前导零和尾部十进制字符。 可以将数据库配置参数 dec_to_char_fmt 设置为
V95
,以使此函数返回十进制输入的版本 9.5 结果。 新数据库的 dec_to_char_fmt 数据库配置参数的缺省值为NEW
,此函数返回与 SQL 标准强制类型转换规则匹配的结果,并且与 VARCHAR 函数的结果一致。
示例
- 示例 1: 假定 PRSTDATE 列具有相当于 1988-12-25 的内部值。 以下函数返回值 "12/25/1988"。
CHAR(PRSTDATE, USA) - 示例 2: 假定STAR丁列具有相当于 17:12:30 的内部值,并且主变量 HOUR_DUR (十进制 (6, 0)) 是具有值 050000 (即 5 小时) 的持续时间。 以下函数返回值 "5:12 PM"。
以下函数返回值 "10:12 PM"。CHAR(STARTING, USA)CHAR(STARTING + :HOUR_DUR, USA) - 示例 3: 假定 RECEIVED 列 (TIMESTAMP) 具有相当于 PRSTDATE 和STAR丁列的组合的内部值。 以下函数返回值 "1988-12-25-17.12.30.000000"。
CHAR(RECEIVED) - 示例 4:LASTNAME 列定义为 VARCHAR (15)。 以下函数将此列中的值作为长度为 10 字节的固定长度字符串返回。 长度超过 10 个字节 (不包括尾部空格) 的 LASTNAME 值将被截断并返回警告。
SELECT CHAR(LASTNAME,10) FROM EMPLOYEE - 示例 5: EDLEVEL 列定义为 SMALLINT。 以下函数将此列中的值作为固定长度字符串返回。 返回 EDLEVEL 值 18 作为 CHAR (6) 值 '18' 后跟四个空格。
SELECT CHAR(EDLEVEL) FROM EMPLOYEE - 示例 6: SALARY 列定义为 DECIMAL ,精度为 9 ,小数位为 2。 当前值 (18357.50) 将以逗号作为十进制字符 (18357,50) 显示。 以下函数返回值 '18357,50' ,后跟三个空格。
CHAR(SALARY, ',') - 示例 7: 将从 20000.25 中减去 SALARY 列中的值,并以缺省十进制字符显示这些值。 以下函数返回值 "-0001642.75" 后跟三个空格。
CHAR(20000.25 - SALARY) - 示例 8: 假定主变量SEASONS_票据定义为 INTEGER 并且具有值 10000。 以下函数返回值 "10000.00"。
CHAR(DECIMAL(:SEASONS_TICKETS,7,2)) - 示例 9: 假定主变量 DOUBLE_NUM 定义为 DOUBLE 并且具有值 -987.654321E-35。 下面的函数返回值'-9.87654321E-33',后面有 9 个空格,因为结果数据类型是 CHAR(24)。
CHAR(:DOUBLE_NUM) - 示例 10: 以下语句返回值为 "TRUE" 的数据类型 CHAR 的字符串。
values CHAR(3=3) - 示例 11: 以下语句返回值为 "FALSE" 的数据类型为 CHAR 的字符串。
values CHAR(3>3)
