PostgreSQL '%' 运算符
PostgreSQL '%' operator
有谁知道 %
运算符对 varchar
有什么影响?
我在一个项目中发现了这个查询,但并不知道它在做什么:
SELECT * FROM Location l where l.name % :param;
我认为它具有相同的效果:
SELECT * FROM Location l where l.name LIKE '%:param%'
但是我没有在 PostgreSQL 文档中找到解释。
%
is the "similarity" operator, provided by the additional module pg_trgm。
它以text
(或其他字符串类型)作为左右操作数和returns boolean
:true
如果两个操作数足够相似,false
如果没有。使用 GUC 参数 pg_trgm.similarity_threshold
.
设置阈值
相关:
- Finding similar strings with PostgreSQL quickly
- Pattern matching with LIKE, SIMILAR TO or regular expressions in PostgreSQL
不要与 modulo operator %
混淆。相同的符号,但数学运算符将 numeric 类型作为左右操作数。
在 Postgres 中,运算符由运算符名称(如 %
)加上左右操作数定义。手册章节 Operator Type Resolution 中的详细信息。临时用户几乎不需要知道这些。通常它只是有效。
相关:
- Can PostgreSQL index array columns?
有谁知道 %
运算符对 varchar
有什么影响?
我在一个项目中发现了这个查询,但并不知道它在做什么:
SELECT * FROM Location l where l.name % :param;
我认为它具有相同的效果:
SELECT * FROM Location l where l.name LIKE '%:param%'
但是我没有在 PostgreSQL 文档中找到解释。
%
is the "similarity" operator, provided by the additional module pg_trgm。
它以text
(或其他字符串类型)作为左右操作数和returns boolean
:true
如果两个操作数足够相似,false
如果没有。使用 GUC 参数 pg_trgm.similarity_threshold
.
相关:
- Finding similar strings with PostgreSQL quickly
- Pattern matching with LIKE, SIMILAR TO or regular expressions in PostgreSQL
不要与 modulo operator %
混淆。相同的符号,但数学运算符将 numeric 类型作为左右操作数。
在 Postgres 中,运算符由运算符名称(如 %
)加上左右操作数定义。手册章节 Operator Type Resolution 中的详细信息。临时用户几乎不需要知道这些。通常它只是有效。
相关:
- Can PostgreSQL index array columns?