查询字符串标签

1.node表格

       ip       |                        labels                         
----------------+-------------------------------------------------------
 1.1.1.1   | x_build rv_build
 1.1.1.2   | x_build rv_build
 1.1.1.3   | x_build rv_build
 1.1.1.4   | x_build aa_rv_build
 1.1.1.5   | x_build rv_build
 1.1.1.6   | x_build aa_rv_build
 1.1.1.7   | x_build rv_build
 1.1.1.8   | x_build rv_build s_build
 1.1.1.9   | n_build
 1.1.2.1   | s_build
 1.1.2.2   | s_build

2.需要查询标签

使用like问题

-- 会把aa_rv_build和rv_build都查出来
select * from node where labels like '%rv_build%';

使用字符串转数组进行查询

这个表达式是一个 PostgreSQL 的查询条件。它使用了 string_to_array() 函数将字符串 labels 按空格拆分为数组,然后使用 any() 函数将数组与字符串 'rv_build' 进行比较。

具体来说,这个查询条件的含义是:如果 labels 字符串中的任何一个元素与 'rv_build' 相等,则条件成立。换句话说,如果 labels 字符串中包含 'rv_build' 这个标签,那么查询条件就会返回 true。

-- 只会查出带有rv_build标签的机器
SELECT * FROM node WHERE 'rv_build' = ANY(string_to_array(labels, ' '))
posted @ 2024-01-17 09:59  lxd670  阅读(9)  评论(0编辑  收藏  举报