2016-04-05 9 views
3

私は、タブとその中にたくさんの名前のfts3テーブルを持っています。私はこのクエリを実行すると:" - *"を使ってsqlite fts3テーブルを照会するには?

SELECT * FROM tab WHERE key MATCH 'an*'; 

を私はこのような結果を得る:

an 
anul 
an- 

をしかし、私はこのクエリを実行すると:

SELECT * FROM tab WHERE key MATCH 'an-*'; 

をそれはまだ "" エントリを結果。 「 - 」結果は「AN」であってもよいが、実際には文字が含まれているエントリのみwoudn'tので、私は私のクエリを書くことができますどのように

an 
an- 

:結果は次のようになるでしょうか?

+0

を '-'私が正しくドキュメントを読んでいる場合は、設定された操作に使用される、予約文字です。残念ながら、私はここで文字をエスケープする構文は何もわかりません。あなたは '\ - *'を試すことができます。 – CommonsWare

答えて

1

デフォルトのtokenizerの規則によれば、-は単語を区切り、それ以外の場合は無視されます。

あなたが最初の単語anを検索し、その後ハイフンをチェックする必要があります。

SELECT * 
FROM tab 
WHERE key MATCH 'an' 
    AND key LIKE 'an-%'; 
関連する問題