たとえば、テーブルを調べて名前を取得するquery
式があります。
A B
1 john, andrew blah
2 drew, mike blah
drew
を含むすべての行を表示したいので、クエリ式はselect where A contains 'drew'
です。 andrew
にはdrew
が含まれているため、両方の行が表示されますが、式select where A = 'drew'
を使用すると、完全一致を探しているため何も表示されません。ここで何をしますか?おそらく正規表現が役立つと考えていましたが、どうすればいいですか?
Wordの境界を処理するには、where A matches
の代わりに where A contains
が必要です。 .*\bdrew\b.*
などの正規表現を使用できます。
\b
があります(つまり、それに隣接する文字はワード文字にはできません).*
最後の箇条書き項目が必要なのは、matches
のロジックがAのコンテンツ全体を特定の式に一致させる必要があるためです(サブストリングの一致を試みるregexmatch
関数とは異なります)。
だから、あなたの場合は
=query(A:B, "select * where A matches '.*\bdrew\b.*'")
または、「Drew」(大文字と小文字を区別しない)も一致させたい場合は、
=query(A:B, "select * where lower(A) matches '.*\bdrew\b.*'")