使用 sql 检查数组中的值是否存在于另一个数组中
Check if values in an array exist in another array using sql
我想执行一些操作,如果我们在一个数组中有一些值存在于另一个数组中。以下是我尝试处理数组的代码的一部分。我有 2 个数组 CL_NM[ ] 和 CL_NM_FIN[ ]。如果 CL_NM[ ] 中的值在 CL_NM_FIN[ ] 中不存在,我想执行更新。请帮助我如何修改我的代码。
尝试执行此操作时,我收到该列已存在的错误,因为 for 循环在进入 else 条件之前未遍历 CL_NM_FIN[ ] 中的所有元素。
我能够使用以下方法解决此问题:
DO
BEGIN
DECLARE arr1 TINYINT ARRAY = ARRAY(1,2,3,4);
DECLARE arr2 INTEGER ARRAY = ARRAY(1,2);
--convert array in table rst1 with column name col1
rst1 = UNNEST(:arr1) as (COL1);
--convert array in table rst2 with column name col1
rst2 = UNNEST(:arr2) as (COL1);
--query with minus
select col1 from :rst1
minus
select col1 from :rst2;
END;
我想执行一些操作,如果我们在一个数组中有一些值存在于另一个数组中。以下是我尝试处理数组的代码的一部分。我有 2 个数组 CL_NM[ ] 和 CL_NM_FIN[ ]。如果 CL_NM[ ] 中的值在 CL_NM_FIN[ ] 中不存在,我想执行更新。请帮助我如何修改我的代码。
尝试执行此操作时,我收到该列已存在的错误,因为 for 循环在进入 else 条件之前未遍历 CL_NM_FIN[ ] 中的所有元素。
我能够使用以下方法解决此问题:
DO
BEGIN
DECLARE arr1 TINYINT ARRAY = ARRAY(1,2,3,4);
DECLARE arr2 INTEGER ARRAY = ARRAY(1,2);
--convert array in table rst1 with column name col1
rst1 = UNNEST(:arr1) as (COL1);
--convert array in table rst2 with column name col1
rst2 = UNNEST(:arr2) as (COL1);
--query with minus
select col1 from :rst1
minus
select col1 from :rst2;
END;