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
模块 创建索引。这也将使您能够仅使用一个索引进行其他文本搜索,并且在您需要这些索引时可能会更有用。

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 回答