UPPER (ロケール依存) スカラー関数

UPPER 関数は、指定したロケールに関連付けられた規則を使用して、すべての文字が大文字に変換されたストリングを戻します。

構文図を読む構文図をスキップするUPPER(string-expression ,locale-name ,code-units ,CODEUNITS16CODEUNITS32OCTETS )

スキーマは SYSIBM です。

string-expression
CHAR、VARCHAR、GRAPHIC、または VARGRAPHIC ストリングを戻す式。 string-expression が CHAR または VARCHAR の場合、この式は FOR BIT DATA であってはなりません (SQLSTATE 42815)。
locale-name
大文字への変換の規則を定義する、ロケールを指定する文字定数。locale-name の値は大/小文字の区別がなく、有効なロケールでなければなりません (SQLSTATE 42815)。有効なロケールとその命名については、『SQL および XQuery のロケール名』を参照してください。
code-units
結果内のコード単位の数を指定する>整数定数。 指定した場合、code-units は以下の範囲の整数でなければなりません。
  • 結果のストリング単位が OCTETS である場合は 1 から 32 672
  • 結果のストリング単位が 2 バイトまたは CODEUNITS16 である場合は 1 から 16 336
  • 結果のストリング単位が CODEUNITS32 である場合は 1 から 8 168
それ以外の場合はエラーになります (SQLSTATE 42815)。code-units が明示的に指定されないと、暗黙のうちに string-expression の長さ属性になります。 OCTETS が指定されており、結果がグラフィック・データである場合、code-units の値は偶数でなければなりません。それ以外の場合はエラーが戻されます (SQLSTATE 428GC)。OCTETS が指定されており、結果のストリング単位が CODEUNIT32 である場合、code-units の値は 4 の倍数でなければなりません (SQLSTATE 428GC)。CODEUNITS16 が指定されており、結果のストリング単位が CODEUNITS32 である場合、code-units の値は 2 の倍数でなければなりません (SQLSTATE 428GC)。
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 の暗黙的または明示的な値、暗黙的または明示的なストリング単位、結果のデータ・タイプ、および結果のストリング単位によって決まります。

表 1. ストリング単位および結果タイプの関数としての、UPPER の結果の長さ属性
結果のデータ・タイプとストリング単位 CODEUNITS16 単位の code-units の長さ属性 CODEUNITS32 単位の code-units の長さ属性 OCTETS 単位の code-units の長さ属性
OCTETS 単位の VARCHAR MIN(code-units * 3, 32672) MIN(code-units * 4, 32672) code-units
CODEUNITS32 単位の VARCHAR MIN(code-units / 2, 8168) MIN(code-units, 8168) MIN(code-units / 4, 8168)
CODEUNITS16 または 2 バイト単位の VARGRAPHIC code-units 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 のコード・ページに変換します。 どちらかのコード・ページ変換の結果として最低 1 つの置換文字が生じた場合、結果には置換文字が含まれることになり、警告が返されて (SQLSTATE 01517)、SQLCA の警告フラグ SQLWARN8 が「W」に設定されます。

最初の引数が NULL になる可能性がある場合、結果も NULL になる可能性があります。 最初の引数が NULL であれば、結果は NULL 値になります。

  • 例 1: EMPLOYEE 表の列 JOB の値で使用されている文字を大文字で返すようにします。
       SELECT UPPER(JOB, 'en_US')
         FROM EMPLOYEE
         WHERE EMPNO = '000020'
    結果は、値 'MANAGER' になります。
  • 例 2: トルコ語のストリング内のすべての「I」文字について大文字を検索します。
       VALUES UPPER('Iİıi', 'tr_TR', CODEUNITS16)
    結果は、ストリング 'IİIİ' になります。
  • 例 3: ドイツ語の「ß」(鋭い S) の大文字形式を検出します。
       VALUES UPPER('ß', 'de', 2, CODEUNITS16)
    結果は、ストリング 'SS' になります。この例では code-units を指定しなければならないことに注意してください。結果に含まれるコード単位のほうが、string-expression に含まれるものよりも多いためです。