8.6.1 CONTAINS
検索条件式指定で指定した条件を満たす文字列が,対象データ中に含まれているかどうかを返します。検索条件式指定で指定した条件を満たす文字列が,対象データ中に含まれている場合は1を返します。含まれていない場合は0を返します。
スカラ関数CONTAINSは探索条件に指定できます。ただし,CASE式の探索条件には指定できません。
- 〈この項の構成〉
(1) 指定形式
スカラ関数CONTAINS::=CONTAINS(対象データ,検索条件式指定) 対象データ::=値式 検索条件式指定::=文字列定数
(2) 指定形式の説明
- 対象データ:
-
検索対象のデータを指定します。
指定規則を次に示します。
-
対象データは,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
対象データには,CHAR型またはVARCHAR型のデータを指定してください。
-
対象データには,?パラメタを単独で指定できません。
-
- 検索条件式指定:
-
検索条件を指定します。
指定規則を次に示します。
-
検索条件式指定は,文字列定数の形式で指定します。文字列定数については,「6.3 定数」を参照してください。
-
検索条件式指定に指定した検索文字列および同義語辞書名以外の文字列は,半角英大文字として扱われます。
-
分離符号は指定できません。
-
検索条件式指定には,単純文字列指定,表記ゆれ補正検索指定,同義語検索指定,およびワード検索指定の4つの指定方法があります。
検索条件式指定::={単純文字列指定|表記ゆれ補正検索指定|同義語検索指定 |ワード検索指定} 単純文字列指定::="検索文字列" 表記ゆれ補正検索指定::={IGNORECASE(単純文字列指定)|SORTCODE(単純文字列指定)} 同義語検索指定::=SYNONYM("同義語辞書名",{単純文字列指定|表記ゆれ補正検索指定}) ワード検索指定::={WORDCONTEXT({単純文字列指定|表記ゆれ補正検索指定 |同義語検索指定}) |WORDCONTEXT_PREFIX({単純文字列指定|表記ゆれ補正検索指定})}
- 単純文字列指定:
-
検索する文字列を次の形式で指定します。
単純文字列指定::="検索文字列"
単純文字列指定の指定例を次に示します。
(例)"COMPUTER"または"computer"
検索する文字列(COMPUTERまたはcomputer)を二重引用符(")で囲みます。
留意事項を次に示します。
-
検索文字列は,半角英大文字と半角英小文字が区別されます。
-
検索文字列中に二重引用符(")がある場合は,二重引用符(")を2個続けて指定してください。
-
検索文字列が0バイトの文字データの場合,実行結果には1が返されます。対象データに関係なく,対象データ中に検索文字列が含まれていると判定されます。
-
- 表記ゆれ補正検索指定:
-
表記ゆれ補正検索をする場合に指定します。表記ゆれ補正検索については,マニュアルHADB システム構築・運用ガイドの表記ゆれ補正検索を参照してください。
検索する文字列を次のどちらかの形式で指定します。
表記ゆれ補正検索指定::={IGNORECASE(単純文字列指定)|SORTCODE(単純文字列指定)}
-
IGNORECASE(単純文字列指定):
IGNORECASEを指定した場合,半角英大文字と半角英小文字の表記ゆれだけが,表記ゆれ補正検索の対象になります。
なお,次の形式で指定することもできます。
I(単純文字列指定)
-
SORTCODE(単純文字列指定):
表記ゆれ補正検索をする場合に指定します。
なお,次の形式で指定することもできます。
S(単純文字列指定)
-
- 同義語検索指定:
-
同義語辞書中の同義語グループに指定された同義語を一括して検索する場合に指定します。指定形式を次に示します。
同義語検索指定::=SYNONYM("同義語辞書名",{単純文字列指定|表記ゆれ補正検索指定})
-
同義語辞書名:
同義語辞書名を指定します。
同義語検索指定の指定例を次に示します。
同義語辞書(Dictionary1)に登録されている文字列
コンピュータ,コンピューター,計算機,計算器,電子計算機,COMPUTER,PC
(例1)単純文字列指定の場合
SYNONYM("Dictionary1","COMPUTER")
この場合,同義語辞書に登録されている「コンピュータ,コンピューター,計算機,計算器,電子計算機,COMPUTER,PC」が検索対象の文字列になります。
(例2)表記ゆれ補正検索指定の場合
SYNONYM("Dictionary1",IGNORECASE("COMPUTER"))
この場合,同義語辞書に登録されている「コンピュータ,コンピューター,計算機,計算器,電子計算機,COMPUTER,PC」のほかに,「Computer,computer,pc」などが検索対象の文字列になります。
- 重要
-
同義語辞書を登録,更新する際の表記ゆれ補正オプションにCASESENSITIVE(表記ゆれ補正検索に対応した同義語辞書を作成しない)を指定した場合,同義語検索指定で表記ゆれ補正検索を指定することはできません。
-
- ワード検索指定:
-
ワード検索をする場合に指定します。ワード検索については,マニュアルHADB システム構築・運用ガイドのワード検索を参照してください。ワード検索指定の指定形式を次に示します。
ワード検索指定::={WORDCONTEXT({単純文字列指定|表記ゆれ補正検索指定 |同義語検索指定}) |WORDCONTEXT_PREFIX({単純文字列指定|表記ゆれ補正検索指定})}
単語単位で完全一致検索を行う場合は,WORDCONTEXTを指定します。単語単位で前方一致検索を行う場合は,WORDCONTEXT_PREFIXを指定します。
-
(3) 規則
-
スカラ関数CONTAINSは,比較述語の左側の比較演算項として指定できます。比較演算子と右側の比較演算項には,「>0」を指定してください。
-
HADBサーバで使用する文字コードがShift-JISの場合,表記ゆれ補正検索指定は指定できません。
-
実行結果のデータ型はINTEGER型になります。
-
実行結果の値は,非ナル値制約なし(ナル値を許す)となります。
-
対象データがナル値の場合,実行結果はナル値になります。
(4) 例題
表T1のC2列(VARCHAR型)には文書情報が格納されています。この文書情報中に含まれている文字列を,スカラ関数CONTAINSを使用して検索します。
- 例題1(単純文字列指定の検索を行う場合)
-
文書情報中に「COMPUTER」が含まれている行を検索します。
SELECT "C1" FROM "T1" WHERE CONTAINS("C2",'"COMPUTER"') > 0
この場合,半角英大文字と半角英小文字が区別されます。そのため,computerなどの文字列は検索対象になりません。
- 例題2(表記ゆれ補正検索を行う場合)
-
文書情報中に「COMPUTER」などが含まれている行を検索します。
SELECT "C1" FROM "T1" WHERE CONTAINS("C2",'IGNORECASE("COMPUTER")') > 0
この場合,表記ゆれ補正検索によって,「COMPUTER」,「computer」,または「Computer」などの文字列が含まれている行が検索対象になります。
- 例題3(表記ゆれ補正検索を行う場合)
-
文書情報中に「コンピュータ」などが含まれている行を検索します。
SELECT "C1" FROM "T1" WHERE CONTAINS("C2",'SORTCODE("コンピュータ")') > 0
この場合,表記ゆれ補正検索によって,「コンピュータ」,「」,または「こんぴゅーた」などの文字列が含まれている行が検索対象になります。
- 例題4(同義語検索を行う場合)
-
同義語辞書Dictionary1に登録している文字列(コンピュータ,コンピューター,計算機,計算器,電子計算機,COMPUTER,PC)を一括して検索します。
SELECT "C1" FROM "T1" WHERE CONTAINS("C2",'SYNONYM("Dictionary1","COMPUTER")') > 0
- 例題5(同義語検索と表記ゆれ補正検索を同時に行う場合)
-
同義語辞書Dictionary1に登録している文字列(コンピュータ,コンピューター,計算機,計算器,電子計算機,COMPUTER,PC)を一括して検索します。さらに,同義語辞書に登録されている文字列の表記ゆれ補正検索も行います。
同義語辞書Dictionary1は,表記ゆれ補正検索に対応している辞書とします。
SELECT "C1" FROM "T1" WHERE CONTAINS("C2",'SYNONYM("Dictionary1",SORTCODE("COMPUTER"))') > 0
上記のSELECT文を実行した場合,同義語辞書に登録している文字列(コンピュータ,コンピューター,計算機,計算器,電子計算機,COMPUTER,PC)のほかに,「Computer」,「computer」,「pc」,「」,「こんぴゅーた」などの文字列が含まれている行が検索対象になります。
- 例題6(ワード検索の単語単位の完全一致検索を行う場合)
-
C2列に格納されている英語文書中に,「COMPUTER」などの英単語がある行を検索します。
SELECT "C1" FROM "T1" WHERE CONTAINS("C2",'WORDCONTEXT(IGNORECASE("COMPUTER"))') > 0
この場合,表記ゆれ補正検索の指定(IGNORECASE)によって,「COMPUTER」,「computer」,または「Computer」などの英単語がある行が検索対象になります。
- 例題7(ワード検索の単語単位の前方一致検索を行う場合)
-
C2列に格納されている英語文書中に,「COMP」で始まる英単語がある行を検索します。
SELECT "C1" FROM "T1" WHERE CONTAINS("C2",'WORDCONTEXT_PREFIX("COMP")') > 0
この場合,「COMPUTER」,「COMPUTERS」,または「COMPANY」などの英単語がある行が検索対象になります。