LEFT または スカラー関数 STRLEFT
LEFT 関数は、指定されたストリング単位の指定された数の左端バイトからなるストリングを戻します。
文字ストリング:
- 1 FL 506 STRLEFT は、LEFT 関数の新しくサポートされた名称です。
スキーマは SYSIBM です。
LEFT 関数は、暗黙的または明示的に指定されたストリング単位の長さで構成された、 character-expression、graphic-expression、または binary-expression の左端のストリングを戻します。
- 文字表現
- 結果を取り出すストリングを指定する式。 ストリングは、文字ストリングでなければなりません。 character-expression のサブス
トリングは、character-expression の 0 個以上の連続したコード・ポイントです。
ストリングには混合データが入っていてもかまいません。 この関数の評価に指定する単位によっては、その結果は必ず しも正しく形成された混合データの文字ストリングであると限りません。
引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。
- 長さ
- 結果の長さを指定する式。 この値は 0 から
n の整数 (n は
character-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-expression、graphic-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と同義語です。

例
SELECT LEFT(:ALPHA,3)
FROM SYSIBM.SYSDUMMY1; SELECT LEFT(:NAME, :FIRSTNAME_LEN)
FROM SYSIBM.SYSDUMMY1; SELECT LEFT('ABCABC',0)
FROM SYSIBM.SYSDUMMY1; SELECT LEFT(FIRSTNME,10)
FROM DSN8C10.EMP
WHERE LASTNAME='BROWN';この関数は、値「DAVID」の後に 5 つのブランク文字が
ある VARCHAR(10) ストリングを戻します。 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
