UPPER (语言环境敏感) 标量函数
UPPER 函数返回一个字符串,在该字符串中,所有字符都已使用与指定语言环境相关联的规则转换为大写字符。
该模式是 SYSIBM。
- string-expression
- 返回 CHAR , VARCHAR , GRAPHIC 或 VARGRAPHIC 字符串的表达式。 如果 string-expression 是 CHAR 或 VARCHAR ,那么表达式不得为 FOR BIT DATA (SQLSTATE 42815)。 locale-name
- 一个字符常量,用于指定用于定义转换为大写字符的规则的语言环境。 locale-name 的值不区分大小写,必须是有效的语言环境 (SQLSTATE 42815)。 有关有效语言环境及其命名的信息,请参阅
SQL 和 XQuery 的语言环境名称
。注意: 将 UNI_SIMPLE 作为区域设置名称,即可启用大小写简单折叠映射。代码单元 - 整数常量 ,用于指定结果中的代码单元数。 如果指定了此参数,那么 code-units 必须是介于以下之间的整数:
- 1 和 32 672 (如果结果的字符串单位是 OCTETS)
- 1 和 16 336 (如果结果的字符串单位是双字节或 CODEUNITS16 )
- 1 和 8 168 (如果结果的字符串单位为 CODEUNITS32 )
- CODEUNITS16、CODEUNITS32 或 OCTETS
- 指定 code-units的字符串单元。
CODEUNITS16 指定 code-units 以 16 位 UTF-16 代码单元表示。 CODEUNITS32 指定 code-units 以 32 位 UTF-32 代码单元表示。 OCTETS 指定 code-units 以字节表示。
如果未显式指定字符串单元,那么 字符串单元 string-expression 将确定所使用的单元。 有关 CODEUNITS16, CODEUNITS32和 OCTETS 的更多信息,请参阅
字符串
中的内置函数中的字符串单元
。
如果 string-expression 是 CHAR 或 VARCHAR ,那么函数的结果为 VARCHAR ,如果 string-expression 是 GRAPHIC 或 VARGRAPHIC ,那么函数的结果为 VARGRAPHIC。 结果的字符串单位与 string-expression的字符串单位相同
结果的长度属性由 code-units的隐式或显式值,隐式或显式字符串单元,结果数据类型 和结果字符串单元 确定,如下表所示:
| 结果的数据类型和字符串单元 | CODEUNITS16 中 code-units 的长度属性 | CODEUNITS32 中 code-units 的长度属性 | OCTETS 中 code-units 的长度属性 |
|---|---|---|---|
| OCTETS 中的 VARCHAR | MIN (code-units * 3 , 32672) | MIN (code-units * 4 , 32672) | 代码单元 |
| CODEUNITS32 中的 VARCHAR | MIN (code-units /2 , 8168) | MIN (code-units, 8168) | MIN (code-units /4 , 8168) |
| CODEUNITS16 中的 VARGRAPHIC 或双字节 | 代码单元 | MIN (code-units * 2 , 16336) | MIN (code-units /2 , 16336) |
| CODEUNITS32 中的 VARGRAPHIC | MIN (code-units /2 , 8168) | MIN (code-units, 8168) | MIN (code-units /4 , 8168) |
结果的实际长度可能大于 string-expression的长度。 如果结果的实际长度大于结果的长度属性,那么将返回错误 (SQLSTATE 42815)。 如果结果中的代码单元数超过 code-units的值,那么将返回错误 (SQLSTATE 42815)。
如果 string-expression 不在 UTF-16中,那么此函数将执行 string-expression 到 UTF-16的代码页转换,并执行从 UTF-16 到 string-expression的代码页的结果的代码页转换。 如果任一代码页转换导致至少一个替换字符,那么结果包括替换字符,将返回警告 (SQLSTATE 01517) ,并且 SQLCA 中的警告标志 SQLWARN8 设置为 "W"。
如果第一个参数可以为空值,那么结果可以为空值;如果第一个参数为空值,则结果为空值。
示例
- 示例 1: 确保以大写字符返回 EMPLOYEE 表中的列 JOB 值中的字符。
结果是值 "MANAGER"。SELECT UPPER(JOB, 'en_US') FROM EMPLOYEE WHERE EMPNO = '000020' - 示例 2: 查找土耳其语字符串中所有 "I" 字符的大写字符。
结果是字符串 "I 伊尔"。VALUES UPPER('Iİıi', 'tr_TR', CODEUNITS16) - 示例 3: 查找德语 "ß" (锐 S) 的大写形式。
结果是字符串 "SS"。 请注意,必须在此示例中指定 code-units ,因为结果中的代码单元数多于 string-expression中的代码单元数。VALUES UPPER('ß', 'de', 2, CODEUNITS16)
