postgresql array数组 添加 包含contains 方法
本文介绍了postgresql array数组 添加 包含contains 方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
当前pg查询数组包含的语法类似下面:
select * from users where (4 = any (role_int_array))
我期望通过如下语句可达到同样的查询结果:
select * from users where role_int_array contains 4
请问这个方法function怎么添加?谢谢~
解决方案
PostgreSQL允许用户自定义操作符,但是操作符不能包含字母。系统已经有一个@>
操作符用于判断数组之间的包含关系了,我们可以重载它。
首先定义一个函数:
create function array_contains(ar anyarray, x anyelement)
returns boolean as
$$
select x = any (ar);
$$ language sql;
然后将@>
与其绑定即可:
create operator @> (
leftarg = anyarray,
rightarg = anyelement,
procedure = array_contains);
使用刚刚定义的操作符:
select array[1,2,3] @> 3;
?column?
----------
t
这篇关于postgresql array数组 添加 包含contains 方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文