「~を途中に含む」という条件で抽出する

f:id:accs2014:20180422225812p:plain:right:w400

 ある文字(文字列)を含む、という条件を指定する例ですが、単に「Aという文字を含む」という条件であれば「Like "*A*"」と指定します。
 しかし「Aという文字を途中に含む」、言い換えれば「Aという文字を最初でもなく最後でもなく途中に含む」という条件にとなると少し様子が違ってきます。この場合の抽出についてです。
 例として、このようなテーブルの「氏名」列において「里」という字を「最初でもなく最後でもなく途中に含む」抽出を考えみます。一見単純ですが、この言い回し自体がちょっとしたあいまいさを含んでいますので、2通りの解釈で条件を設定し、抽出を行ってみます。この例に限らず、設定しようとする条件については厳密に比較検討していただきたいと思います。

「~を途中に含んでいれば最初または最後に同じものがあってもよい」という場合の例

f:id:accs2014:20180422225809p:plain:right:w400

 「里」という文字が氏名の途中にありさえすれば、最初または最後に別の「里」があってもよい、という場合の例です。
 抽出条件は次のようになります。



Like "*?里?*"

 「里」という文字の前後にそれぞれ1文字以上の文字が存在すること(それが「里」であってもよい)を意味していますので、結果的に「里」が途中に含まれる氏名が抽出されることとなります。


f:id:accs2014:20180422225807p:plain:right:w300

 データシートビューです。
 苗字の2文字目と名前の3文字目(氏名の最後)が「里」である「中里 美乃里」が抽出されています。


「~を途中にのみ含む」という場合の例

f:id:accs2014:20180422225804p:plain:right:w400

 「里」という文字が氏名の途中にだけあり、最初または最後に別の「里」があってはならない、という場合の例です。
 抽出条件は次のようになります。



Like "*里*" And Not Like "里*" And Not Like "*里"

 「里」という字を含み、しかしそれが最初の1文字であってはならず、最後の1文字であってもならない、ということを意味しています。


f:id:accs2014:20180422225801p:plain:right:w300


 データシートビューです。氏名の最後が「里」である「中里 美乃里」は抽出されていません。

 上記の2つの条件は一見似ていますが、その意味はやはり異なります。Like演算子による条件設定にはこうした微妙な違いがつきものですので、よく検討していただきたいと思います。