値を基準に部分文字列を特定し、文字列内でのその部分文字列の末尾位置を表す整数を返す汎用 SQL 関数です。
Synopsis
$FIND(string,substring[,position])
この関数は、データ型 SMALLINT を返します。
SELECT DISTINCT $FIND('ABCDEG','BCD') AS SubPoint
FROM Sample.Person
以下の例は、数値 987654321 で数値 7 を検索し、
substring の後の位置を示す 4 を返します。
SELECT DISTINCT $FIND(987654321,7) AS SubPoint
FROM Sample.Person
以下の例は、
substring "AA" の最初のインスタンスの後の文字の位置を示す 3 を返します。
SELECT DISTINCT $FIND('AAAAAA','AA') AS SubPoint
FROM Sample.Person
以下の例では、
$FIND は文字列に含まれていない部分文字列を検索します。結果はゼロ (0) を返します。
SELECT DISTINCT $FIND('AABBCCDD','AC') AS SubPoint
FROM Sample.Person
以下の例では、
$FIND は 7 番目の文字から検索を開始します。この例は、7 文字目以降での "R" の出現箇所の次の位置を示す 14 を返します。
SELECT DISTINCT $FIND('EVERGREEN FOREST','R',7) AS SubPoint
FROM Sample.Person
以下の例では、
$FIND は文字列の最後の文字の後から、検索を開始します。結果はゼロ (0) を返します。
SELECT DISTINCT $FIND('ABCDEFG','G',10) AS SubPoint
FROM Sample.Person
以下の埋め込み SQL の例は、1 よりも小さい
position が 1 として処理されることを示しています。
SET a="ABCDEFG"
SET b="F"
&sql(SELECT
$FIND(:a,:b),
$FIND(:a,:b,1),
$FIND(:a,:b,0),
$FIND(:a,:b,-35)
INTO :a1,:a2,:a3,:a4
FROM Sample.Person)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"The input string: ",a
WRITE !,"Two-arg: ",a1
WRITE !,"3rd arg 1: ",a2
WRITE !,"3rd arg 0: ",a3
WRITE !,"3rd arg negative: ",a4 }
以下の埋め込み SQL の例は、
$FIND を使用して、Unicode 文字の pi、つまり $CHAR(960) が含まれる文字列を検索しています。最初の
$FIND は、pi の次の文字の位置を示す 5 を返します。2 番目の
$FIND は、4 文字目から検索を開始し、4 文字目が検索文字の pi に該当するため、同様に 5 を返します。3 番目の
$FIND は 5 文字目から検索を開始し、5 文字目以降での pi の出現箇所の次の位置を示す 13 を返します。位置 12 が文字列の最後の文字であっても、位置 13 が返されることに注意してください。
SET a="QT "_$CHAR(960)_" HONEY "_$CHAR(960)
SET b=$CHAR(960)
&sql(SELECT
$FIND(:a,:b),
$FIND(:a,:b,4),
$FIND(:a,:b,5)
INTO :a1,:a2,:a3
FROM Sample.Person)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"The input string: ",a
WRITE !,"From beginning: ",a1
WRITE !,"From position 4: ",a2
WRITE !,"From position 5: ",a3 }
$FIND、$EXTRACT、$PIECE、および $LIST
-
$FIND は、値により部分文字列を検索し、位置を返します。
-
-
$PIECE は、区切り文字または区切り文字列により部分文字列を検索し、部分文字列の値を返します。
-
$LIST は、特別にエンコードされた文字列を操作します。文字列のカウントにより部分文字列を検索し、部分文字列の値を返します。