一尘不染

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

sql

我已经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.

运行%<->操作员需要什么?


阅读 205

收藏
2021-03-10

共1个答案

一尘不染

这很可能是的问题search_path。run:

SHOW search_path;

是否包含安装pg_trgm的架构?如果没有,请包括在内。

另外,您可以使用OPERATOR()结构对函数进行模式限定-甚至运算符:

SELECT * FROM rssdata WHERE extensions.similarity(description, 'Brazil') > .8;
SELECT * FROM rssdata WHERE description OPERATOR(extensions.%) 'Brazil';

使它独立于search_path

2021-03-10