1

ユーザーがテキストボックスにコードを投稿できる状況があり、すべての特殊文字が htmlentities として保存されるテーブルに保存するとします。

対応する html エンティティを検索せずに、テーブル内で文字 '<' を検索するにはどうすればよいですか? postgresql にはこの機能が組み込まれていますか?

お時間をいただきありがとうございます

4

1 に答える 1

2

あなたが本当に望んでいるものを私が理解しているかどうかはよくわかりません。ただし、 <文字を含むテーブル内の行を効率的に検索する方法を知りたい場合は、次のような 式でインデックスを作成できます。

CREATE INDEX index_name ON table (position('<' in column));

次に、次のようにして、目的の列にパターンが含まれる行を検索できます。

SELECT * FROM table WHERE position('<' in column) > 0;

もちろん、テーブルのほとんどの行にはそのようなパターンが含まれていないと思います。さもなければ、このインデックスはあまり役に立ちません。

注意: PostgreSQL >= 9.1 を使用している場合は、 pg_trgm
モジュールを使用 してインデックスを作成することもできます。これにより、インデックスを 1 つだけ使用して他のテキスト検索を実行することも可能になり、それらが必要になった場合にさらに便利になる可能性があります。

CREATE INDEX index_name ON table USING gist (column gist_trgm_ops);

次に、次のように行を検索できます。

SELECT * FROM table WHERE column LIKE '%<%';

詳細については、公式ドキュメントのpg_trgmを確認してください。

于 2012-12-13T23:22:25.677 に答える