1

Id、Nameのようなテーブル'TableName'があります。

1 | something
2 | _something
3 | something like that
4 | some_thing
5 | ...

このテーブルから、名前に「some」が含まれているすべての行を取得したいと思います。私には2つの方法があります:

SELECT * FROM TableName WHERE Name like '%some%'

結果は表です:

1 | something
2 | _something
3 | something like that
4 | some_thing

しかし、CONTAINS関数を使用すると

SELECT * FROM TableName WHERE CONTAINS(Name,'"*some*"')

私だけが得る

1 | something
3 | something like that

CONTAINS関数を正しく機能させるにはどうすればよいですか?

4

3 に答える 3

2

私が最後に調べたとき(確かにSQL Server 2000)CONTAINSは、単語の最初でワイルドカードマッチングをサポートしていませんでしたが、最後でしかサポートしていませんでした。また、ノイズファイルをチェックして、「_」文字が無視されているかどうかを確認する必要がある場合もあります。

も参照してください

主要なワイルドカード全文検索をSQLServerで機能させるにはどうすればよいですか?

于 2010-01-13T12:24:31.740 に答える
0

http://doc.ddart.net/mssql/sql70/ca-co_15.htm

この記事を読むと、*は接頭辞を意味し、これは単語がこれで始まる必要があることを意味しますが、likeは単語にキーフレーズが含まれていることを意味します。

よろしく、ヨルダン

于 2010-01-13T09:47:48.187 に答える
0

これを試して:

SELECT * FROM TableName WHERE CONTAINS(Name,'some')
于 2010-01-13T09:49:07.100 に答える