SUBSTRING はストリング処理関数で、すべてのストリング・データ・タイプ (BIT、BLOB、および CHARACTER) を処理し、ストリングから文字を抽出して、別のストリングを作成します。
>>-SUBSTRING--(--SourceExpression--+- FROM --StartPosition------+--> +- BEFORE --BeforeExpression-+ '- AFTER --AfterExpression---' >--+---------------------+--)---------------------------------->< '- FOR --StringLength-'
StartPosition
StartPosition を指定する場合、SUBSTRING は SourceExpression と同じタイプの新規ストリングを戻しますが、このストリングには、StartPosition および StringLength によって指定されたとおりに SourceExpression から抽出された文字が連続して含まれます。 StringLength を指定しない場合、StartPosition から SourceExpression の末尾まで文字が連続します。 StartPosition は負の値にすることができます。それと共に StartPosition と StringLength で範囲を定義します。 結果として、この範囲と SourceExpression とが重なり合います。StringLength は StartPosition より小さくすることはできません。
BeforeExpression
BeforeExpression を指定する場合、SUBSTRING は SourceExpression と同じタイプの新規ストリングを戻しますが、このストリングには、SourceExpression 内の BeforeExpression の最初のオカレンスから BeforeExpression の最初のオカレンスの最初の文字 (ただしこの文字は含まない) までの StringLength 文字から抽出された文字が連続して含まれます。 StringLength を指定しない場合、SourceExpression の最初から BeforeExpression の最初のオカレンスの最初の文字 (ただしこの文字は含まない) までの連続文字が選ばれます。 SourceExpression に BeforeExpression ストリングがない場合、空 (長さゼロ) のストリングが戻されます。
BeforeExpression ストリングのデータ・タイプは、SourceExpression と同じでなければなりません。
AfterExpression
AfterExpression を指定する場合、SUBSTRING は SourceExpression と同じタイプの新規ストリングを戻しますが、このストリングには、AfterExpression の最初のオカレンスの末尾の後の最初の文字で始まり、SourceExpression (または StringLength が指定されていればその文字) の末尾までの、SourceExpression から抽出された文字が連続して含まれます。 SourceExpression に AfterExpression ストリングがない場合、空 (長さゼロ) のストリングが戻されます。
AfterExpression ストリングのデータ・タイプは、SourceExpression と同じでなければなりません。
いずれかのパラメーターが NULL なら、結果は NULL です。 これは長さが 0 のストリングではありません。
例:
SUBSTRING('Hello World!' FROM 7 FOR 4)
returns 'Worl'.SUBSTRING('Hello World!' BEFORE 'World');
'Hello
' を戻します。SUBSTRING('Hello World!' BEFORE 'World' FOR 3);
'lo
' を戻します。SUBSTRING('Hello World!' BEFORE 'e');
'H' を戻します。SUBSTRING('Hello World!' AFTER 'World');
'!' を戻します。.SUBSTRING('Hello World!' AFTER 'W' FOR 2);
'or' を戻します。SUBSTRING('Hello World!' AFTER 'P');
'' を戻します。