如何使用扩展名pg_trgm中的%运算符?

时间:2014-04-09 23:05:58

标签: sql postgresql pattern-matching search-path

我安装了pg_trgm模块。

pg_trgm | 1.0     | extensions | text similarity measurement and index ...

架构集为extensions。要使用它,我必须运行类似这样的选择:

extensions.similarity('hello','hallo');

我尝试使用%运算符运行语句并收到以下消息。

mydb=# select * from rssdata where description % 'Brazil';
ERROR:  operator does not exist: character varying % unknown
LINE 1: select * from rssdata where description % 'Brazil';
                                            ^
HINT:  No operator matches the given name and argument type(s).
You might need to add explicit type casts. 

运行%<->运营商需要什么?

1 个答案:

答案 0 :(得分:4)

很可能这是search_path的问题。运行:

SHOW search_path;

是否包含您安装的架构pg_trgm?如果没有,请加入它。

或者,您可以使用OPERATOR() construct

对函数进行模式限定 - 甚至是运算符
SELECT * FROM rssdata WHERE extensions.similarity(description, 'Brazil') > .8;
SELECT * FROM rssdata WHERE description OPERATOR(extensions.%) 'Brazil';

使其独立于search_path