在PostgreSQL中与html实体一起存储的字段,如何在不执行<的情况下搜索(sql select)特殊字符(例如<



假设我遇到这样一种情况:用户可以在文本框中发布代码,并将其存储在所有特殊字符都存储为 htmlentity 的表中。

如何在表中搜索字符"<"而不搜索其等效的 html 实体?postgresql 有内置函数吗?

谢谢你的时间

我不太确定我是否理解你真正想要的是什么。但是,如果您想知道如何有效地搜索表中包含<字符的行,则可以在表达式上创建如下索引

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。

相关内容

最新更新