在 postgresql ltree 中使用多个参数搜索
Search with multiple parameter in postgresql ltree
我计划实现一个使用 ltree 作为多级分类的数据库。但是,当我尝试获取路径为 x 或 y 的条目时,我 运行 遇到了麻烦。
new_table
+-------+--------+---------+
| id | name | path |
----------------------------
| 1 | a | 001 |
| 2 | b | 002 |
| 3 | c | 001.001 |
| 4 | d | 002.001 |
| 5 | e | 003 |
----------------------------
根据下面所述的 table,我想获得一个以 001 或 002 开头的 ID。但是我似乎无法获得正确的查询。
预期结果:1,2,3,4
这有效:select id from new_table where path <@ '001' or path <@ '002'
这不是(导致语法错误):select id from ingredient where ingredient_path <@ '001|002'
这让我感到困惑,因为 documentation 指出使用 | (或)符号是acceptable。
我是ltree的新手,希望我能得到一个很容易理解的答案。
符号 | (or) 在 ltxtquery
中是可以接受的,所以使用 ltree @ ltxtquery
运算符:
select id from new_table where path @ '001|002'; -- find labels 001 or 002
-- or
select id from new_table where path @ '001*|002*'; -- find labels starting with 001 or 002
尝试:
select id from new_table where path ~ '001|002.*'
OR 不适用于 <@
运算符我认为,根据文档,
ltree <@ ltree
和|
可以用在lquery
中而不是
我计划实现一个使用 ltree 作为多级分类的数据库。但是,当我尝试获取路径为 x 或 y 的条目时,我 运行 遇到了麻烦。
new_table
+-------+--------+---------+
| id | name | path |
----------------------------
| 1 | a | 001 |
| 2 | b | 002 |
| 3 | c | 001.001 |
| 4 | d | 002.001 |
| 5 | e | 003 |
----------------------------
根据下面所述的 table,我想获得一个以 001 或 002 开头的 ID。但是我似乎无法获得正确的查询。
预期结果:1,2,3,4
这有效:select id from new_table where path <@ '001' or path <@ '002'
这不是(导致语法错误):select id from ingredient where ingredient_path <@ '001|002'
这让我感到困惑,因为 documentation 指出使用 | (或)符号是acceptable。
我是ltree的新手,希望我能得到一个很容易理解的答案。
符号 | (or) 在 ltxtquery
中是可以接受的,所以使用 ltree @ ltxtquery
运算符:
select id from new_table where path @ '001|002'; -- find labels 001 or 002
-- or
select id from new_table where path @ '001*|002*'; -- find labels starting with 001 or 002
尝试:
select id from new_table where path ~ '001|002.*'
OR 不适用于 <@
运算符我认为,根据文档,
ltree <@ ltree
和|
可以用在lquery
中而不是