VARCHAR 标量函数
VARCHAR 函数返回不同数据类型的值的变长字符串表示。
二进制整数到 VARCHAR
十进制到 VARCHAR
浮点到 VARCHAR
十进制浮点数到 VARCHAR
字符串到 VARCHAR
图形字符串到 VARCHAR
二进制字符串到 VARCHAR
日期时间到 VARCHAR
布尔值到 VARCHAR
该模式是 SYSIBM。 在函数特征符中使用关键字时,不能将函数名指定为限定名。
- 二进制整数到 VARCHAR
- 整数表达式
- 返回整数数据类型 (SMALLINT , INTEGER 或 BIGINT) 的值的表达式。
结果是采用 SQL 整数常量形式的 integer-expression 的变长字符串表示。 结果的长度属性取决于 integer-expression 是小整数,大整数还是大整数,如下所示:- 如果第一个自变量是小整数,那么结果的最大长度为 6。
- 如果第一个自变量是大整数,那么结果的最大长度为 11。
- 如果第一个自变量是大整数,那么结果的最大长度为 20。
结果的实际长度是可用于表示自变量值的最小字符数。 不包含前导零。 如果自变量为负数,那么结果的第一个字符为减号。 否则,第一个字符是数字。
结果的代码页是该节的代码页。
- 十进制到 VARCHAR
- 十进制表达式
- 返回十进制数据类型的值的表达式。 DECIMAL 标量函数可用于更改精度和小数位。 十进制字符
- 指定用于对结果字符串中的十进制数字进行定界的单字节字符常量。 字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是采用 SQL 十进制常量形式的 decimal-expression 的变长字符串表示。 结果的长度属性为 2 +p,其中 p 是 decimal-expression的精度。 结果的实际长度是可用于表示结果的最小字符数,但包含尾部零。 不包含前导零。 如果 decimal-expression 为负数,那么结果的第一个字符为减号; 否则,第一个字符为数字或十进制字符。 如果 decimal-expression 的小数位为零,那么不会返回十进制字符。
结果的代码页是该节的代码页。
- 浮点到 VARCHAR
- 浮点表达式
- 返回浮点数据类型 (DOUBLE 或 REAL) 的值的表达式。 十进制字符
- 指定用于对结果字符串中的十进制数字进行定界的单字节字符常量。 字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是以 SQL 浮点常量的形式表示 浮点表达式 的变长字符串。
结果的最大长度为 24。 结果的实际长度是可以表示浮点表达式值的最小字符数,因此尾数由后跟 decimal-character 和一系列数字的非零个位数组成。 如果 浮点表达式 为负数,那么结果的第一个字符为减号; 否则,第一个字符为数字。 如果 浮点表达式 为零,那么结果为 0E0。
结果的代码页是该节的代码页。
- 十进制浮点数到 VARCHAR
- decimal-浮点表达式
- 返回十进制浮点数据类型 (DECFLOAT) 的值的表达式。 十进制字符
- 指定用于对结果字符串中的十进制数字进行定界的单字节字符常量。 字符常量不能是数字,加号 (+) ,减号 (-) 或空格 (SQLSTATE 42815)。 缺省值为句点 (.) 字符。
结果是以 SQL 十进制浮点常量的形式表示 decimal-floatpoint-expression 的变长字符串。 结果的最大长度为 42。 结果的实际长度是可以表示 decimal-浮点表达式的值的最小字符数。 如果 decimal-浮点表达式 为负数,那么结果的第一个字符为减号; 否则,第一个字符为数字。 如果 decimal-浮点表达式 为零,那么结果为 0。
如果 "十进制浮点表达式的值是特殊值 Infinity、"sNaN,或 "NaN,,则将分别返回字符串 "
无限
、"SNAN
和 "南网
。 如果特殊值为负数,那么结果的第一个字符是减号。 十进制浮点特殊值sNaN转换为字符串时不会产生警告。结果的代码页是该节的代码页。
- 字符串到 VARCHAR
- character-expression
- 返回内置字符串数据类型的值的表达式。 integer
- 一个整数常量,用于指定生成的变长字符串的长度属性。 该值必须介于 0 与 之间,即 VARCHAR 数据类型的最大长度 (以结果的字符串为单位)。如果未指定 第二个 参数:
- 如果 character-expression 是空字符串常量,那么结果的长度属性为 0。
- 否则,结果的长度属性为以下值中的较低值:
- VARCHAR 数据类型的最大长度 (以结果的字符串单位为单位)
- 第一个自变量的长度属性
结果是可变长度字符串。 结果的长度属性由 integer的值确定。 如果 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 ,那么将返回错误 (SQLSTATE 22001)。
- 图形字符串到 VARCHAR
- 图形表达式
- 返回内置图形字符串数据类型的值的表达式。 integer
- 一个整数常量,用于指定生成的变长字符串的长度属性。 该值必须介于 0 与 之间,即 VARCHAR 数据类型的最大长度 (以结果的字符串为单位)。如果未指定第二个自变量:
- 如果 graphic-expression 是空字符串常量,那么结果的长度属性为 0。
- 如果 graphic-expression 的字符串单元为 CODEUNITS32,那么结果的长度属性为以下值中的较低值:
- VARCHAR 数据类型的最大长度 (以结果的字符串单位为单位)
- 第一个自变量的长度属性
- 否则,结果的长度属性为以下值中的较低值:
- VARCHAR 数据类型的最大长度 (以结果的字符串单位为单位)
- 第一个自变量的 3 * length 属性
结果是转换自 graphic-expression的变长字符串。 结果的长度属性由 integer的值确定。
如果转换为字符串的 graphic-expression 的长度大于结果的长度属性,那么存在以下几种情况:- 如果结果的字符串单元是 CODEUNITS32,那么将执行截断。 如果仅截断空白字符,并且 graphic-expression 为 GRAPHIC 或 VARGRAPHIC ,那么不会返回任何警告。 否则,将返回警告 (SQLSTATE 01004)。
- 如果指定了 integer 并且 graphic-expression 是 GRAPHIC 或 VARGRAPHIC ,那么将执行截断而不返回警告。
- 如果指定了 integer 并且 graphic-expression 是 DBCLOB ,那么将执行截断并返回警告 (SQLSTATE 01004)。
- 如果未指定 integer ,并且 graphic-expression 是 GRAPHIC 或 VARGRAPHIC ,那么将执行截断而不返回警告。
- 如果未指定 integer ,并且 graphic-expression 是 DBCLOB ,那么将返回错误 (SQLSTATE 22001)。
- 二进制字符串到 VARCHAR
- 二进制表达式
- 返回内置二进制字符串数据类型的值的表达式。 integer
- 一个整数常量,用于指定生成的变长字符串的长度属性。 该值必须介于 0 与 之间,即 VARCHAR 数据类型的最大长度 (以结果的字符串为单位)。
结果是 FOR BIT DATA 字符串。
- 日期时间到 VARCHAR
- 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)。
结果的代码页是该节的代码页。
- 具有下列其中一种数据类型的表达式:
- 布尔值到 VARCHAR
- 布尔表达式
- 返回布尔值 (TRUE 或 FALSE) 的表达式。 结果为 "TRUE" 或 "FALSE"。
结果
- 整数 (如果唯一参数是 SMALLINT , INTEGER 或 BIGINT 值)
- 十进制数 (如果第一个自变量是 DECIMAL 值)
- 双精度浮点数 (如果第一个自变量是浮点 (DOUBLE 或 REAL) 值)
- 十进制浮点数 (如果第一个自变量是十进制浮点 (DECFLOAT) 值)
- 字符串 (如果第一个自变量是字符串 (CHAR , VARCHAR 或 CLOB) 值)
- 图形字符串 (仅适用于 Unicode 数据库) ,如果第一个自变量是图形字符串 (GRAPHIC , VARGRAPHIC 或 DBCLOB) 值
- 日期时间值 (如果第一个自变量是日期时间 (DATE , TIME 或 TIMESTAMP) 值)
- 布尔值 ("TRUE" 或 "FALSE") ,如果唯一参数是 BOOLEAN 值 (TRUE 或 FALSE)
- OCTETS ,如果第一个自变量是字符串或字符串单位为 OCTETS , CODEUNITS16或双字节的图形字符串。
- CODEUNITS32,如果第一个自变量是字符串或字符串单位为 CODEUNITS32的图形字符串。
- 由环境的缺省字符串单元确定 (如果第一个自变量不是字符串或图形字符串)。
- 如果输入是字符串,那么部分字符将替换为一个或多个空格
- 如果输入是图形字符串,那么部分字符将替换为空字符串
如果第一个自变量可以为空,那么结果可以为空。 如果第一个自变量为空,那么结果为空值。
注意
- 提高应用程序的可移植性: 如果第一个自变量是数字,或者如果第一个自变量是字符串且指定了长度自变量,请使用 CAST 规范 而不是此函数来提高应用程序的可移植性。
示例
- 示例 1: 使 EMPNO 变长,长度为 10。
SELECT VARCHAR(EMPNO,10) INTO :VARHV FROM EMPLOYEE - 示例 2: 将定义为 VARCHAR (8) 的主变量 JOB_DESC 设置为 VARCHAR 等效于针对员工 Dolores Quintana 的作业描述 (即 JOB 列的值) ,定义为 CHAR (8)。
SELECT VARCHAR(JOB) INTO :JOB_DESC FROM EMPLOYEE WHERE LASTNAME = 'QUINTANA' - 示例 3: EDLEVEL 列定义为 SMALLINT。 以下内容以变长字符串形式返回值。
生成值 "18"。SELECT VARCHAR(EDLEVEL) FROM EMPLOYEE WHERE LASTNAME = 'HAAS' - 示例 4: SALARY 和 COMM 列定义为 DECIMAL ,精度为 9 ,小数位为 2。 使用逗号十进制字符返回员工 Haas 的总收入。
生成值 "56970,00"。SELECT VARCHAR(SALARY + COMM, ',') FROM EMPLOYEE WHERE LASTNAME = 'HAAS' - 示例 5: 以下语句返回值为 "TRUE" 的数据类型为 VARCHAR 的字符串。
values VARCHAR(3=3) - 示例 6: 以下语句返回值为 "FALSE" 的数据类型为 VARCHAR 的字符串。
values VARCHAR(3>3)
