SUBSTR( ) 関数

文字列のうちの指定された部分文字列を返します。

構文

SUBSTR(文字列, 開始位置, 長さ)

パラメーター

名前 種類 説明
文字列 文字 部分文字列を抽出する値。
開始 数値 部分文字列の開始文字位置。
長さ 数値

部分文字列の文字数。

長さが 0 の場合は、出力は空です。

出力

文字。

基本的な例

リテラル文字の入力値

"BCD" が返されます。

SUBSTR("ABCDEF", 2, 3)

"EF" が返されます。

SUBSTR("ABCDEF", 5, 10)

構造的な文字データを解析する

"189543" が返されます。

SUBSTR("***189543***", 4, 6)

"MM/DD/YYYY" として書式設定された日付が含まれる文字フィールドのうち、4 桁の年

SUBSTR(DATE, 7, 4)

高度な例

フィールド長を大きくする

文字フィールドの長さを大きくするのに SUBSTR( ) を使用できます。フィールド長を大きくすることは、2 つのフィールドを結合したり追加したりする前に必要に応じて行うことができる一般的な調整作業です。

次の例は、Product_Description フィールドにスペースを追加して、長さが 50 文字の演算フィールド、Product_Description_Long を作成しています。

DEFINE FIELD Product_Description_Long COMPUTED SUBSTR(Product_Description, 1, 50)

備考

機能の仕組み

SUBSTR( ) 関数は、文字列値内の、開始位置で指定された桁位置から始まる文字列を返します。長さには、返される文字数を指定します。

SUBSTR( ) がスペースを処理する方法

文字列値の先頭、末尾、または内部のスペースは文字として処理されます。開始位置および長さで取り込まれたスペースは出力文字列に含まれます。

スペースの追加の動作

長さの値が開始位置から文字列の終わりまでの文字数(スペースを含む)を超える場合は、出力の右側にスペースが追加される場合とされない場合があります。

スペースが追加される場合とは

フィールドを作成するコマンド内で SUBSTR( ) を使用する場合は、出力にスペースが追加されます。

演算フィールドを作成する場合のスペースの追加

次の例は、長さが 24 文字の物理フィールド、Product_Description に基づいて、長さが 50 文字の演算フィールド、Product_Description_Long を作成しています。

DEFINE FIELD Product_Description_Long COMPUTED SUBSTR(Product_Description, 1, 50)

物理フィールドを抽出する場合のスペースの追加

次の例は、長さが 24 文字の物理フィールド、Product_Description に基づいて、長さが 50 文字の演算フィールド、Product_Description_Long を新しいテーブルに抽出しています。

EXTRACT FIELDS SUBSTR(Product_Description, 1, 50) AS "Product_Description_Long" TO New_Table

スペースが追加されない場合とは

変数定義または式で SUBSTR( ) を使用する場合は、出力にはスペースが追加されません。

変数を定義する場合にはスペースが追加されない

次の例は、Product_Description のフィールド長に基づいて、長さが 24 文字の変数、v_prod_desc を作成しています。

ASSIGN v_prod_desc = SUBSTR(Product_Description, 1, 50)

メモ

SUBSTR( ) の長さに 50 文字を指定していても、出力は Product_Description のフィールド長に制限されます。

関連する関数

SUBSTR( ) と SPLIT( ) はともに、長いソース文字列からデータのセグメントを返します。

  • SUBSTR( ) は数値文字の位置を使ってセグメントを識別します。
  • SPLIT( ) は区切り文字を使ってセグメントを識別します。
ACL のスクリプト作成ガイド 14.1