正規表現の条件

正規表現は、正規表現エンジンが入力文字列との照合を試行するパターンです。regex_like関数では、正規表現の照合が実行されます。regex_like関数では、標準SQLのLIKE演算子と同様の機能が提供されます。つまり、この関数を使用して、入力文字列が特定のパターンと一致するかどうかをチェックできます。入力文字列とパターンは、それぞれ1番目と2番目の引数で計算されます。3番目のオプションの引数は、照合の実行方法に影響するフラグ・セットを指定します。

パターン文字列は、入力テキストと照合する正規表現です。ピリオド(.)は、改行を除くあらゆる1文字と一致するメタ文字です。グリーディ数量詞(*)は、前述の要素が0個以上出現することを示すメタ文字です。たとえば、regex "D.*"は、文字Dで始まり、その後に0個以上の文字が続く文字列と一致します。

例1: 名前がZで始まる乗客の手荷物情報をフェッチします。
SELECT bag.fullname,bag.bagInfo[].tagNum 
FROM BaggageInfo bag
WHERE regex_like(fullName, "Z.*")

説明: フルネームがZで始まる乗客のフルネームとタグ番号をフェッチします。正規表現を使用して、フルネームの最初の文字はZである必要があるが、残りは他のものでかまわないことを指定します。

出力:
{"fullname":"Zina Christenson","tagNum":"17657806228676"}
{"fullname":"Zulema Martindale","tagNum":"17657806288937"}

例2: フライト出発地にMが含まれている乗客の手荷物情報をフェッチします。

オプション1:
SELECT bag.fullname,bag.bagInfo[].tagNum, 
bag.bagInfo[].flightLegs[0].fltRouteSrc 
FROM BaggageInfo bag 
WHERE regex_like(bag.bagInfo.flightLegs[0].fltRouteSrc, ".*M.*")

説明: ここでの前提は、flightLegs配列の最初のレコードに出発地の詳細があることです。フライト出発地にMが含まれている乗客のフルネームとタグ番号をフェッチします。正規表現を使用して、出発地フィールドの文字のいずれかはMである必要があるが、残りは他のものでかまわないことを指定します。

また、前述の問題を解決するために、異なるアプローチを使用して問合せを記述することもできます。

オプション2: flightLegs配列の索引をハードコードするのではなく、regex_like関数を使用して正しい索引を決定します。
SELECT bag.fullname,bag.bagInfo[].tagNum, 
bag.bagInfo[].flightLegs[].fltRouteSrc 
FROM BaggageInfo bag
WHERE EXISTS (bag.bagInfo.flightLegs[regex_like($element.fltRouteSrc, ".*M.*")])
オプション3: routingフィールドの部分文字列を使用して出発地を抽出し、regex_like関数を使用して、出発地に含まれる文字Mを検索します。
SELECT bag.fullname,bag.bagInfo[].tagNum,
substring(bag.bagInfo[].routing,0,3) 
FROM BaggageInfo bag WHERE
regex_like(substring(bag.bagInfo[].routing,0,3), ".*M.*")
出力:
{"fullname":"Raymond Griffin","tagNum":"17657806243578","fltRouteSrc":"MSQ"}
{"fullname":"Elane Lemons","tagNum":"1765780623244","fltRouteSrc":"MXP"}
{"fullname":"Zina Christenson","tagNum":"17657806228676","fltRouteSrc":"MIA"}
{"fullname":"Zulema Martindale","tagNum":"17657806288937","fltRouteSrc":"MIA"}
{"fullname":"Adam Phillips","tagNum":"17657806255240","fltRouteSrc":"MIA"}
{"fullname":"Joanne Diaz","tagNum":"17657806292518","fltRouteSrc":"MIA"}
{"fullname":"Teena Colley","tagNum":"17657806255823","fltRouteSrc":"MSQ"}
{"fullname":"Omar Harvey","tagNum":"17657806234185","fltRouteSrc":"MEL"}
{"fullname":"Fallon Clements","tagNum":"17657806255507","fltRouteSrc":"MXP"}