假设有这样一种情况,用户可以在文本框中发布代码,而我将其存储在一个表中,其中所有特殊字符都存储为htmlentities。
如何在表中搜索字符'<‘,而不搜索与其等效的html实体?postgresql有内置的函数吗?
谢谢您抽时间见我
发布于 2012-12-13 23:22:26
我不太明白你真正想要的是什么。但是,如果您想知道如何在包含< character efficiently的表中搜索行,可以在如下表达式上创建索引:
CREATE INDEX index_name ON table (position('<' in column));
然后,您可以通过执行以下操作来搜索其所需列包含该模式的行:
SELECT * FROM table WHERE position('<' in column) > 0;
当然,我假设表中的大多数行都不会包含这样的模式,否则这个索引就不会有多大用处。
通知:
如果您使用的是pg_trgm 9.1,还可以在PostgreSQL >= 模块的帮助下创建索引。这还将使您能够仅使用一个索引进行其他文本搜索,如果您需要这些索引,可能会被证明更有用。
CREATE INDEX index_name ON table USING gist (column gist_trgm_ops);
然后您可以像这样搜索您的行:
SELECT * FROM table WHERE column LIKE '%<%';
更多信息请查看官方文档中的pg_trgm。
https://stackoverflow.com/questions/13869904
复制相似问题