UPPER スカラー関数

UPPER 関数は、すべての文字を大文字に変換したストリングを戻します。

構文図を読むビジュアルシンタックスダイアグラムをスキップするUPPER( 文字列式,ロケール名文字列,整数)

スキーマは SYSIBM です。

文字列式
変換対象のストリングを指定する式。 string-expression は、組み込みの文字ストリングまたはグラフィック・ストリングの値を戻す必要があります。 文字ストリング引数は CLOB であってはならず、グラフィック・ストリング引数は DBCLOB であってはなりません。 string-expression が EBCDIC グラフィック・ストリングの場合、locale-name-string にはブランク・ストリングを指定できません。 string-expression がビット・データの場合、locale-name-string は指定できません。
ロケール名文字列
有効なロケール名を指定する、CLOB または DBCLOB 以外のストリング定数またはストリング・ホスト変数。 locale-name-string が EBCDIC でない場合は、EBCDIC に変換されます。 locale-name-string の長さは、EBCDIC表現で1~255バイトの範囲でなければなりません。 locale-name-string の値は大/小文字の区別がなく、また有効ロケールでなければなりません。 ロケールとその命名規則に関する情報は、「ロケールの命名規則」 を参照してください。 以下はロケールの例です。
  • Fr_BE
  • Fr_FR@EURO
  • En_US
  • Ja_JP

変換処理は、ロケール名に対して指定された値により、以下のように決定されます。

ブランク
SBCS の小文字 a から z は SBCS の大文字 A から Z に変換され、発音区別符号付きの文字は変換されません。 ストリングに MIXED 文字または DBCS 文字が 含まれている場合、全角の小文字 a から z は全角のローマ字大文字 A から Z に変換されます。 パフォーマンスを最適にするために、特定のロケールで定義された規則を使用してデータを処理しなければならない場合を除いて、ブランク・ストリングを指定してください。
UNI
変換では 、[変換の選択] で説明されているように、標準および特殊文字のケース変換機能の両方が使用されます。 string-expression が EBCDIC データである場合は、UNI を指定できません。
UNI_60
変換には、Unicode Standard 6.0.0 と、大文字・小文字の区別機能 (「変換の選択」で説明)を使用します。 ストリング式 が EBCDIC データの場合は、UNI_60 を指定してはなりません。
UNI_90
変換には、Unicode Standard 9.0.0 と、大文字・小文字の区別機能 (「変換の選択」で説明)を使用します。 文字列表現がEBCDICデータの場合、 UNI_90 を指定してはいけません。
UNI_SIMPLE
ケース変換は 、選択した変換で説明されているように、標準の大文字・小文字変換機能を使用します。 UNI_SIMPLE は EBCDIC データでは使用できません。
ロケール名
ロケールは、大文字への変換の規則を定義します。

ホスト変数の値は NULL であってはなりません。 ホスト変数に標識変数がある場合、その標識変数の値は NULL 値を示すものであってはなりません。 ロケール名は、以下のようになっていなければなりません。

  • ホスト変数内では左寄せ
  • 長さがホスト変数の長さより短く、ホスト変数が固定長の CHAR または GRAPHIC データ・タイプの場合は、右側にブランクを埋め込み

locale-name-string を指定しないと、ロケールは特殊レジスター CURRENT LOCALE LC_CTYPE によって決定されます。 特殊レジスタに関する情報は、 現在のロケールLC_CTYPE特殊レジスタを参照してください。

式ベースの索引で UPPER 関数を参照する場合は、locale-name-string を指定する必要があります。

整数
結果の長さ属性を指定する整数値。 指定する場合、 integer はstring-expression のエンコード スキームの表現で 1 ~ 32704 バイトの範囲の整数定数である必要があります。

integer を指定しない場合、結果の長さ属性は string-expression の 長さと同じになります。

Unicode データの場合、UPPER 関数を使用すると、特定の文字を処理したときに拡張が生じることがあります。 例えば、UPPER(UX'FB03') の結果は UX'004600460049' になります。 結果のストリングがこの式の結果を収容するのに十分な大きさであることを必ず確認してください。

結果はnullになる可能性があります。引数がnullの場合、結果もnull値となります。

代替構文:
UCASE は UPPER の同義語です。 UPPER は、SQL 標準に準拠するために使用する必要があります。

例 1:
ストリング「abcdef」を大文字で返します。 有効なロケールがブランクであると仮定します。
   SELECT UPPER('abcdef')
     FROM SYSIBM.SYSDUMMY1
結果の値は、「ABCDEF」です。
例 2:
ストリング「ffi」を大文字 (「FFI」) で返します。 有効なロケールは「UNI」であると仮定します。
SELECT UPPER(UX'FB03')
  FROM SYSIBM.SYSDUMMYU;
この結果はエラーとなります。その理 由は、ある種の Unicode 文字の処理時点で発生する拡張があるからです。 このエラーを防止するには、代わりに以下の ステートメントを使用する必要があります。
SELECT UPPER(CAST(UX'FB03' AS VARCHAR(3))
  FROM SYSIBM.SYSDUMMYU;
上記ステートメントの結果は、値「FFI」になります。
例 3:
ロケール名が 'Fr_FR@EURO' の組み込み関数 UPPER に基づいて、表 EMPLOYEE の索引 EMPLOYEE_NAME_UPPER を作成します。
   CREATE INDEX EMPLOYEE_NAME_UPPER
      ON EMPLOYEE (UPPER(LASTNAME, 'Fr_FR@EURO', 60),
                   UPPER(FIRSTNAME, 'Fr_FR@EURO', 60),
                   ID);
結果の値は、「ABCDEF」です。