Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

SUBSTRING (SQL)

ストリーム・データを含め、任意のデータ型のデータから部分文字列を返す文字列関数です。

Synopsis

SUBSTRING(string-expression,start[,length])

SUBSTRING(string-expression FROM start [FOR length])

{fn SUBSTRING(string-expression,start[,length])}

引数

引数 説明
string-expression 部分文字列が得られる文字式。列の名前、文字列リテラル、他のスカラ関数の結果などを表すことができる式。フィールドは、文字列 (CHAR や VARCHAR など)、数値、またはデータ型 %Stream.GlobalCharacter または %Stream.GlobalBinary のデータ・ストリーム・フィールドなど、任意のデータ型にすることができます。
start string-expression 内で、部分文字列が開始する場所を指定する整数。string-expression の最初の文字はポジション 1 です。開始位置が文字列の長さ以上である場合、SUBSTRING は空文字列 ('') を返します。開始位置が 1 以下である場合 (ゼロまたは負の数)、部分文字列はポジション 1 で開始しますが、部分文字列の length は開始位置により削減されます。
length オプション — 返される部分文字列の長さを指定する整数。length を指定しない場合、既定で残りの文字列が返されます。

概要

SUBSTRING は任意のデータ型のデータを取り、そのデータの部分文字列をデータ型 %String として返します。部分文字列はもちろん、文字列として返される完全なデータ値でもかまいません。

start の値は、部分文字列の開始ポイントを管理します。

  • start が 1 の場合、部分文字列は string-expression の先頭から始まります。

  • start が 1 より大きい場合、部分文字列は string-expression の先頭からカウントされるその文字位置から始まります。

  • start が 1 より小さい場合、部分文字列は string-expression の先頭から始まりますが、length の値は対応する量によってディクリメントされます。したがって、start が 0 の場合、length の値は 1 まで減少します。start が -1 の場合、length の値は 2 まで減少します。

length の値は、部分文字列のサイズを管理します。

  • length が正の値の場合 (1 以上)、部分文字列は start 位置から右に向かって length 文字数まで進んで終わります (この有効な長さは、start の数が 1 より小さいと減少する場合もあります)。

  • length が、文字列内の残りの文字より長い場合、string-expression の開始位置の右側から最後までのすべての文字を返します。

  • length が 0 未満の場合、NULL が返されます。

  • length が負の数の場合、InterSystems IRIS は SQLCODE -140 エラーを発行します。

SUBSTRING は、ODBC スカラ関数 ({ } 括弧構文) や SQL 汎用関数として使用されます。

返り値

string-expression が %String データ型の場合は、SUBSTRING の返り値は、string-expression データ型と同じデータ型になります。これにより、SUBSTRING でユーザ定義の文字列データ型を、特殊なエンコードを使用して処理できるようになります。

string-expression が %String データ型でない場合 (%Stream.GlobalCharacter など)、SUBSTRING の返り値は %String になります。

すべての SUBSTRING 引数の値が NULL の場合、SUBSTRING は NULL を返します。

ストリーム・データ

ほとんどの SQL 文字列関数とは異なり、SUBSTRINGストリーム・データと共に使用できます。string-expression は、データ型 %Stream.GlobalCharacter または %Stream.GlobalBinary のフィールドにできます。SUBSTRING は、抽出されたストリーム・データのサブセットを %String データ型として返します。start=1 の場合に length を省略すると、SUBSTRING は完全なストリーム・データ値を %String として返します。

このため、SUBSTRING を使用して、文字ストリーム・データを文字列として他の SQL 文字列関数に提供できます。以下の例では、SUBSTRING を使用して、DNA ヌクレオチド配列が含まれる %Stream.GlobalCharacter フィールドの最初の 1000 文字で部分文字列 TTAGGG の最初の出現箇所を CHARINDEX で検索し、その位置を整数として返すことができます。

SELECT CHARINDEX('TTAGGG',SUBSTRING(DNASeq,1,1000)) FROM Sample.DNASequences

SUBSTRING または SUBSTR

  • SUBSTRING は、string-expression の先頭からカウントされる start 位置から部分文字列を抽出します。SUBSTR は、部分文字列を文字列の最初の部分または最後の部分のいずれかから抽出できます。

  • SUBSTRINGストリーム・データと共に使用できますが、SUBSTR はストリーム・データと共に使用できません。

以下の例は、"forward" 文字列を返します。

SELECT {fn SUBSTRING( 'forward pass',1,7 )} AS SubText

以下の例は、"pass" 文字列を返します。

SELECT {fn SUBSTRING( 'forward pass',9,4 )} AS SubText

以下の例は、各名前の最初の 4 文字を返します。

SELECT Name,SUBSTRING(Name,1,4) AS FirstFour
FROM Sample.Person

以下の例は、SUBSTRING の他の構文形式を示しています。この例は、機能的に以前の例と同じです。

SELECT Name,SUBSTRING(Name FROM 1 FOR 4) AS FirstFour
FROM Sample.Person

以下の例では、length が 1 より小さい start の値によってどのように減少するかを示しています (0 の start 値は length を 1 減らし、-1 の start 値は length を 2 減らす、というようになります)。この場合、length は 3 減らされるため、1 つの文字 (“A”) だけが返されます。

SELECT {fn SUBSTRING( 'ABCDEFG',-2,4 )} AS SubText

関連項目

FeedbackOpens in a new tab