首页 > 数据库 >postgresql自定义函数实现功能有两个数组arr1,arr2,返回第一个数组中不在第二个数组的数据

postgresql自定义函数实现功能有两个数组arr1,arr2,返回第一个数组中不在第二个数组的数据

时间:2024-03-29 19:11:59浏览次数:23  
标签:数组 自定义 -- text result arr1 array


CREATE OR REPLACE FUNCTION array_difference(
    arr1 text[], 
    arr2 text[]
)
RETURNS text[] AS
$$
DECLARE
    result_arr text[];
BEGIN
    -- 初始化结果数组为一个空数组
    result_arr := '{}';

    -- 遍历第一个数组中的每个元素
    FOR i IN 1..array_length(arr1, 1) LOOP
        -- 如果当前元素不在第二个数组中,则将其添加到结果数组中
        IF arr1[i] <> ALL(arr2) THEN
            result_arr := array_append(result_arr, arr1[i]);
        END IF;
    END LOOP;

    RETURN result_arr;
END;
$$
LANGUAGE plpgsql;


-- 示例数据
CREATE TEMP TABLE example_data (
    arr1 text[],
    arr2 text[]
);

INSERT INTO example_data VALUES
    ('{apple, banana, orange}', '{banana, kiwi, mango}'),
    ('{red, green, blue}', '{yellow, blue, purple}');

-- 调用函数
SELECT array_difference(arr1, arr2) AS result FROM example_data;


result
--------------------
{apple,orange}
{red,green}

-- 实战
SELECT array_difference((SELECT array(select json_array_elements_text('{"users":["1685947296799670275","1685947296799670274"],"roles":[],"groups":[],"organizations":[]}'::json->'users'))),
 (SELECT array(select json_array_elements_text('{"users":["1685947296799670275","1685947296799670276"],"roles":[],"groups":[],"organizations":[]}'::json->'users'))))

标签:数组,自定义,--,text,result,arr1,array
From: https://www.cnblogs.com/ysloong/p/18104441

相关文章

  • postgresql自定义函数实现三个数组存在相同数据,且在第四个数组中不存在的数据
    --使用postgresql语言写一个函数,实现以下功能:--1有管理权限用户数组、列表权限用户数组、查看权限用户数组、无权限用户数组四个用户数组--2当无权限用户数组存在用户数据时,如果管理权限用户数组,列表权限用户数组,查看权限用户数组中存在相同的用户数据,并且和无权限用户数......
  • elementUI——el-form表单数据校验(包含数组循环)
    一、普通的值类型的数据校验①设置el-form-item的prop值与formdata中定义的key保持一致`②如果rules需要通过el-form统一设置,rules的key定义也与prop保持一致(如果不一致,需要在el-form-item中手动指定)③复杂的校验函数可通过validator单独定义<el-form......
  • 代码随想录算法训练营第二十三天(二叉树9)|669. 修剪二叉搜索树、108. 将有序数组转换为
    文章目录669.修剪二叉搜索树解题思路源码108.将有序数组转换为二叉搜索树解题思路源码538.把二叉搜索树转换为累加树解题思路源码669.修剪二叉搜索树给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值......
  • Java 的数组详解
    数组的定义数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标(编号、标记)来访问它,下标是从0开始的,如果是存10个数组,那么下标是从0~9的代码举例publ......
  • Leetcode 长度最小的子数组
    Day13第一题超出运行时间,两层循环classSolution{publicintminSubArrayLen(inttarget,int[]nums){if(Arrays.stream(nums).sum()<target){return0;}intminSubArrayLen=nums.length;OUT:......
  • 2024-03-29 js练习之生成多个数组,且每个数组内的值不能重复
    代码:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>doubleBox</t......
  • QT 自定义插件问题 error: LNK2001: 无法解析的外部符号
    为了重复利用已有的代码,我使用自定义插件进行开发。当每个插件独立开发时没有遇到问题,但是当插件B引用了插件A时就会在编译时报错error:LNK2001:无法解析的外部符号。例如,先定义一个插件ColorPicker,用于颜色选取。关键代码如下:classQDESIGNER_WIDGET_EXPORTColorPicker:......
  • 数组应用实例1 —— 三子棋
    数组应用实例1——三子棋文章目录数组应用实例1——三子棋一、标识符常量的定义和头文件的包含二、主函数`main()`三、测试游戏逻辑`test()`四、菜单界面`menu()`五、游戏实现`game()`六、初始化棋盘`InitBoard()`1函数原型2函数实现七、打印棋盘`DisplayB......
  • H5get请求重定向后页面没有跳转重定向的地址是什么问题;H5get请求重定向后页面不跳转自
    Ajax请求的处理:如果使用了XMLHttpRequest或FetchAPI进行GET请求,并通过异步处理来获取响应数据,那么浏览器不会自动跳转到重定向的地址。如果在H5的GET请求中,服务器返回了重定向响应(HTTP状态码为3xx),但页面没有跳转到重定向的地址,可能有几种可能的原因:JavaScript......
  • 除自身以外数组的乘积 - LeetCode 热题 16
    大家好!我是曾续缘......