LEFT または スカラー関数 STRLEFT

LEFT 関数は、指定されたストリング単位の指定された数の左端バイトからなるストリングを戻します。

文字ストリング:

構文図を読むビジュアルシンタックスダイアグラムをスキップするLEFTSTRLEFT1( character-expression, 長さ,CODEUNITS16CODEUNITS32OCTETS)
注:
  • 1 FL 506 STRLEFT は、LEFT 関数の新しくサポートされた名称です。

スキーマは SYSIBM です。

LEFT 関数は、暗黙的または明示的に指定されたストリング単位の長さで構成された、 character-expressiongraphic-expression、または binary-expression の左端のストリングを戻します。

文字表現
結果を取り出すストリングを指定する式。 ストリングは、文字ストリングでなければなりません。 character-expression のサブス トリングは、character-expression の 0 個以上の連続したコード・ポイントです。

ストリングには混合データが入っていてもかまいません。 この関数の評価に指定する単位によっては、その結果は必ず しも正しく形成された混合データの文字ストリングであると限りません。

引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。

長さ
結果の長さを指定する式。 この値は 0 から n の整数 (ncharacter-expression の長さ属性) であり、暗黙的または明示的に指定し た単位で表現される必要があります。

引数を、文字ストリングまたはグラフィック・ストリングのデータ・タイプにすることもできます。 ストリング入力は、暗黙的に DECFLOAT(34) の数値にキャストされ、その後 INTEGER 値に割り当てられます。

CODEUNITS16 または CODEUNITS32 が指定されている場合、結果文字列の長さ属性を計算する方法については、「最終結果の長さ属性の決定」を参照してください。

CODEUNITS16、CODEUNITS32、または OCTETS
integer を表すのに使用する単位を指定します。 string-expression がビット・データとして定義された文字ストリング の場合は、CODEUNITS16 および CODEUNITS32 は指定できません。 string-expression がグラフィック・ストリングの場合は、OCTETS は 指定できません。 string-expression がバイナリー・ストリングの場合は、CODEUNITS16、CODEUNITS32、および OCTETS は指定できません。
CODEUNITS16
integer が、16 ビットの UTF-16 コード単位の形で表現されるこ とを指定します。
CODEUNITS32
integer が、32 ビットの UTF-32 コード単位の形で表現されるこ とを指定します。
OCTETS
integer が、バイトの形で表現されることを指定します。

CODEUNITS16、 CODEUNITS32、OCTETSの詳細については、「文字列単位仕様」 を参照してください。

character-expressiongraphic-expression、または binary-expression の指定されたサブストリングが必ず存在するように、実際上は式の右側に必要な数の文字が埋め込まれます。 データのコード化スキームによって、埋め込み文字が決まります。

  • ASCII SBCS データまたは ASCII MIXED データの場合、 埋め込み文字は X'20' になります。
  • ASCII DBCS データの場合、埋め込み文字は CCSID によって決まります。例えば、 日本語 (CCSID 301) の埋め込み文字は X'8140' であり、中国語 (簡体字) の 埋め込み文字は X'A1A1' です。
  • EBCDIC SBCS データまたは EBCDIC MIXED データの場合、 埋め込み文字は X'40' になります。
  • EBCDIC DBCS データの場合、埋め込み文字は X'4040' になります。
  • Unicode SBCS データまたは UTF-8 (Unicode 混合データ) の 場合、埋め込み文字は X'20' です。
  • UTF-16 (Unicode DBCS) データの場合、 埋め込み文字は X'0020' です。
  • 2 進データの場合、埋め込み文字は X'00' になります。

関数の結果は、長さ属性が最初の式の長さ属性と同じで、データ・タイプは式のデータ・タイプに依存する、可変長ストリングです。

  • character-expression が CHAR または VARCHAR であれば VARCHAR
  • character-expression が CLOB であれば CLOB
  • graphic-expression が GRAPHIC または VARGRAPHIC であれば VARGRAPHIC
  • graphic-expression が DBCLOB であれば DBCLOB
  • binary-expression が BINARY または VARBINARY であれば VARBINARY
  • binary-expression が BLOB であれば BLOB

結果の実際の長さは 、length から決定されます。

結果は NULL 値になることがあります。いずれかの引数が NULL 値である場合、結果は NULL 値になります。

結果の CCSID は、最初の式の CCSID と同じです。

変更の開始

代替構文:
FL 506 STRLEFT はLEFTと同義語です。
変更の終わり

例 1: ホスト変数 ALPHA の値が「ABCDEF」である とします。 次のステートメントは、ALPHA の左端の 3 文字である「ABC」を戻します。
  SELECT LEFT(:ALPHA,3)
    FROM SYSIBM.SYSDUMMY1;
例 2: VARCHAR (50) として定義されているホスト変数 名前の値が「KATIE AUSTIN」であり、整数ホスト変数 FIRSTNAME_LEN の値が 5 であると想定します。 次のステートメントは、値「KATIE」を返します。
   SELECT LEFT(:NAME, :FIRSTNAME_LEN)
     FROM SYSIBM.SYSDUMMY1;
例 3: 以下のステートメントは長さがゼロの ストリングを戻します。
   SELECT LEFT('ABCABC',0)
     FROM SYSIBM.SYSDUMMY1;
例 4: サンプル EMP 表の FIRSTNME 列は VARCHAR(12) と して定義されます。 ラストネームが「BROWN」である従業員のファーストネームを 検索して、ファーストネームを 10 バイトのストリングで戻します。
   SELECT LEFT(FIRSTNME,10)
     FROM DSN8C10.EMP
     WHERE LASTNAME='BROWN';
この関数は、値「DAVID」の後に 5 つのブランク文字が ある VARCHAR(10) ストリングを戻します。
例 5 FIRSTNAME は表 T1 内の VARCHAR(12) の列です。 その値の 1 つが 6 文字ストリング「Jürgen」です。 FIRSTNAME が以下の値を持つ場合:
   Function ...                            Returns ...
   LEFT(FIRSTNAME,2,CODEUNITS32)           'Jü'  -- x'4AC3BC'
   LEFT(FIRSTNAME,2,CODEUNITS16)           'Jü'  -- x'4AC3BC'
   LEFT(FIRSTNAME,2,OCTETS)                'J '  -- x'4A20'  A truncated string
変更の開始例6: 以下の例では、LEFT関数の最後の呼び出しは部分サロゲート文字を返します
   Function ...                            Returns ...
   LEFT('Jürgen',2,CODEUNITS32)            'Jü'    -- x'4AC3BC'
   LEFT('Jürgen',2,CODEUNITS16)            'Jü'    -- x'4AC3BC'
   LEFT('Jürgen',2,OCTETS)                 'J '    -- x'4A20'  A truncated string
   HEX(LEFT('Jürgen',2))                   x'4AC3' -- The letter 'J' and a partial character
変更の終わり