postgresql array数组 添加 包含contains 方法

查看:2617
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆