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

标签 sql postgresql pattern-matching search-path

我有我的 pg_trgm已安装模块。

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

模式集是extensions .要使用它,我必须运行这样的选择:

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

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

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. 

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

最佳答案

问题很可能出在 search_path 上环境。运行:

SHOW search_path;

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

或者,如果您有必要的权限,您可以 change the schema of an extension与:

ALTER EXTENSION pg_trgm SET SCHEMA public;  -- or the schema you want

或者,您可以使用模式限定函数 - 甚至运算符使用 OPERATOR() construct :

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

移除对 search_path 的依赖。但这很乏味。

关于sql - 如何使用扩展 pg_trgm 中的 % 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975599/

相关文章:

mysql - 从 SQL 有序 ASC 中选择最后 20 行

mysql - 返回任何列与输入匹配的行

sql - 使用 Join 选择数据

PostgreSQL 9.3 : How to insert upper case UUID into table

javascript - 从父级获取部分类名并应用于子级 JQuery

hashmap - 模式匹配选项时引用具有不兼容类型的匹配臂时抛出错误

r - 如何用R中的条件替换前两个匹配模式

sql - azure 函数: GET data from API and POST it in a sql database

postgresql - 什么是 Postgresql 等效的 string.Format ("{0:s}", DateTime.Now)?

sql - 从 VARCHAR 转换为 DATE