postgres使用SIMILAR TO表示多个单词

时间:2018-07-26 09:09:19

标签: sql postgresql

我知道SIMILAR TO关键字可以按如下方式使用:

SELECT * from table WHERE column SIMILAR TO '(AAA|BBB|CCC)%';

此处查询将获取包含AAA,BBB或CCC的所有列。据我了解,它的工作方式为AAA OR BBB OR CCC。如果那是正确的,那么我该如何实现需要AAA AND BBB AND CCC的情况。我浏览了文档,但没有具体说明如何执行此操作。我需要获取与所有给定字符串相似的所有列。

谢谢。

1 个答案:

答案 0 :(得分:1)

不是在谈论性能,但是我认为语法很接近-只需在每个替换项中添加通配符即可:

db=# with p(s) as (values('aaaxx'),('bbbxxx'),('cccxxx'),('dddxxx'))
select s, s similar to '(aa%|bb%)' from p;
   s    | ?column?
--------+----------
 aaaxx  | t
 bbbxxx | t
 cccxxx | f
 dddxxx | f
(4 rows)

https://www.postgresql.org/docs/current/static/functions-matching.html#FUNCTIONS-SIMILARTO-REGEXP