1
contains(columnname, 'ABC')=0

これは、「ABC」という単語を含まないデータを検索することを意味します

contains(columnname, 'ABC and XYZ')=0
contains(columnname, 'ABC or XYZ')=0

これら2つのSQLはどういう意味ですか? テストしましたが、構文エラーはありませんでしたが、期待どおりに動作しませんでした。「and」は「or」のように見え、「or」は「and」のように見えます。Google で見つかったすべてのドキュメントは、contains()>0 用です。これらは必要なものではありません。

前もって感謝します。

4

1 に答える 1

5

オラクルのドキュメントによると、contains関数:

選択されたすべての行の関連性スコアを返します

頼めば

contains(columnname, 'ABC')=0

あなたは実際にスコアを求めます0: 列名に「ABC」が含まれていないことを意味します

ドキュメントによると:

AND クエリでは、返されるスコアは最も低いクエリ用語のスコアです

OR クエリでは、返されるスコアは最高のクエリ用語のスコアです

したがって、次のように尋ねる場合:

contains(columnname, 'ABC and XYZ')=0

次に、「ABC」または「XYZ」のいずれかのスコア0が最も低いスコアを持ち、それが関数から得られるものであるため、実際に求めているのは、列名に「ABC」または「XYZ」が含まれていないことです。 ' (少なくとも 1 つ)。

or-についても同じこと

contains(columnname, 'ABC or XYZ')=0

'ABC'0'XYZ' の両方に関数のスコアがある場合にのみ が返さ0れるため、実際に求めているのは、列名に 'ABC' と 'XYZ' (両方とも) が含まれていないことです。

私見、デモラガンの法則を満たしているため、この動作は正しいです

于 2012-10-31T09:39:03.197 に答える