TableAに次のデータがあります...
ID | Text
---------------------------------------------
1 | let's find this document
2 | docments are closed
...そして、次の選択を行うと...
select Text from TableA where Text like '%doc%';
...奇妙な結果が得られたようです。両方の行が返されます。この選択では、行 1 だけを返すべきではありませんか? と思っただろうな..
select Text from TableA where Text like 'doc%';
...行 2 だけが返されます。何か不足していますか?
私がやろうとしているのは、検索ツールの一部として、このデータに対して 3 つの個別の検索を実行することです。最初の一致は、文字列の先頭で指定されたパターン「doc」を検索することです。2 番目に、次の一致では文字列の末尾にある同じパターンを検索し、3 番目に、パターンがテキスト内のどこかに現れるかどうかを識別します。 - テキストを囲むことができます。理想的には、最初の検索は行 2 のみに一致し、2 番目の検索は結果を返さず、3 番目の結果は行 1 のみを返します。
このようにする理由は、パターンがどのように文字列に一致するかを感じてみたかったからです。特定の行のパターンが (a) 先頭、(b) 末尾、(c) 中間のいずれかに一致したことを確認すると、結果が読みやすくなります。
正規表現の使用を考えていましたが、私のデータはユニコードです。