2

好的,所以我在名为 path 的列上有一个带有 ltree 的表。我想选择多个路径,但我不想有大量的 OR 语句。这是可能的还是最好的方法?

路径:

  • 'schools.myschool.*'
  • '公司.about.*'
  • '测试.信息.内容。*'

询问:

SELECT content, path FROM threads WHERE path ~ 'schools.myschool.*' OR path ~ 'companies.about.*' OR path ~ 'testing.information.content.*

4

2 回答 2

2
select 'schools.myschool.*' ~ any(array[
    'schools.myschool.*', 'companies.about.*', 'testing.information.content.*'
]);
 ?column? 
----------
 t
于 2014-03-11T08:21:30.133 回答
1

您可以使用 or-operator 将正则表达式合并为一个|,并通过分隔公共后缀:

SELECT content, path FROM threads 
WHERE path ~ '(schools.myschool|companies.about|testing.information.content).*'
于 2017-09-29T06:10:23.873 回答