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

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

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

スキーマは SYSIBM です。

string-expression
組み込みの文字ストリング、ブール値、または GRAPHIC ストリングを返す式。 この式が文字ストリングを返す場合、この式は FOR BIT DATA を指定できません (SQLSTATE 42815)。
locale-name
小文字への変換の規則を定義する、ロケールを指定する文字定数。値は大/小文字の区別がなく、有効なロケールでなければなりません (SQLSTATE 42815)。 有効なロケールとその命名については、『SQL および XQuery のロケール名』を参照してください。
code-units
結果内のコード単位の数を指定する>整数定数。指定した場合、次の範囲の整数でなければなりません。
  • 結果のストリング単位が OCTETS である場合は 1 から 32672
  • 結果のストリング単位が 2 バイトまたは CODEUNITS16 である場合は 1 から 16336
  • 結果のストリング単位が CODEUNITS32 である場合は 1 から 8168
これ以外の場合には、エラーになります (SQLSTATE 42815)。デフォルトは string-expression の長さ属性です。
code-units に指定できる値は、使用されるストリング単位に応じて異なります。
  • ストリング式にストリング単位 OCTETS が指定され、結果が GRAPHIC データである場合、値は偶数でなければなりません (SQLSTATE 428GC)。
  • ストリング式にストリング単位 OCTETS が指定され、結果のストリング単位が CODEUNIT32 である場合、値は 4 の倍数でなければなりません (SQLSTATE 428GC)。
  • ストリング式にストリング単位 CODEUNITS16 が指定され、結果のストリング単位が CODEUNITS32 である場合、値は 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. ストリング単位および結果タイプの関数としての、LOWER の結果の長さ属性
結果のデータ・タイプとストリング単位 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 LOWER(JOB, 'en_US')
         FROM EMPLOYEE
         WHERE EMPNO = '000020'
    結果は、値 'manager' になります。
  • 例 2: トルコ語のストリング内のすべての「I」文字について小文字を検索します。
       VALUES LOWER('Iİıi', 'tr_TR', CODEUNITS16)
    結果は、ストリング 'ıiıi' になります。