Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 比较Oracle中的两个列表_Sql_Oracle - Fatal编程技术网

Sql 比较Oracle中的两个列表

Sql 比较Oracle中的两个列表,sql,oracle,Sql,Oracle,我有两个列表需要比较。我需要找出列表A中是否至少有一个元素在列表B中找到。我知道在中不能处理两个列表。我的其他选择是什么 基本上是这样的: SELECT CASE WHEN ('A','B','C') IN ('A','Z','H') THEN 1 ELSE 0 END "FOUND" FROM DUAL 非常感谢您的帮助 您需要重复以下条件: SELECT (CASE WHEN 'A' IN ('A', 'Z', 'H') OR 'B' IN ('A',

我有两个列表需要比较。我需要找出列表A中是否至少有一个元素在列表B中找到。我知道在中不能处理两个列表。我的其他选择是什么

基本上是这样的:

SELECT 
CASE WHEN ('A','B','C') IN ('A','Z','H') THEN 1 ELSE 0 END "FOUND"
FROM DUAL

非常感谢您的帮助

您需要重复以下条件:

SELECT (CASE WHEN 'A' IN ('A', 'Z', 'H') OR
                  'B' IN ('A', 'Z', 'H') OR
                  'C' IN ('A', 'Z', 'H')
             THEN 1 ELSE 0
        END) as "FOUND"
FROM DUAL

您需要重复以下条件:

SELECT (CASE WHEN 'A' IN ('A', 'Z', 'H') OR
                  'B' IN ('A', 'Z', 'H') OR
                  'C' IN ('A', 'Z', 'H')
             THEN 1 ELSE 0
        END) as "FOUND"
FROM DUAL
在Oracle中,您可以执行以下操作:

select
  count(*) as total_matches
from table(sys.ODCIVarchar2List('A', 'B', 'C')) x, 
     table(sys.ODCIVarchar2List('A', 'Z', 'H')) y
where x.column_value = y.column_value;
在Oracle中,您可以执行以下操作:

select
  count(*) as total_matches
from table(sys.ODCIVarchar2List('A', 'B', 'C')) x, 
     table(sys.ODCIVarchar2List('A', 'Z', 'H')) y
where x.column_value = y.column_value;

你可能正在寻找这样的东西。WITH子句只是用来模拟你的“列表”(不管你是什么意思);它们并不是解决方案的一部分。您需要的查询只是最后三行(加上末尾的分号)


你可能正在寻找这样的东西。WITH子句只是用来模拟你的“列表”(不管你是什么意思);它们并不是解决方案的一部分。您需要的查询只是最后三行(加上末尾的分号)


如果正在使用字符串集合,可以尝试使用多集运算符

create type coll_of_varchar2 is table of varchar2(4000);
以及:

此外:

-- union of elemtns
select * from table(coll_of_varchar2('A','B','C') multiset union distinct coll_of_varchar2('A','Z','H'));
select * from table(coll_of_varchar2('A','B','C') multiset union all coll_of_varchar2('A','Z','H'));

-- eelemnt from col1 not in col2
select * from table(coll_of_varchar2('A','A','B','C') multiset except all coll_of_varchar2('A','Z','H'));
select * from table(coll_of_varchar2('A','A','B','C') multiset except distinct coll_of_varchar2('A','Z','H'));

-- check if col1 is subset col2
select * from dual where coll_of_varchar2('B','A') submultiset coll_of_varchar2('A','Z','H','B');

如果正在使用字符串集合,可以尝试使用多集运算符

create type coll_of_varchar2 is table of varchar2(4000);
以及:

此外:

-- union of elemtns
select * from table(coll_of_varchar2('A','B','C') multiset union distinct coll_of_varchar2('A','Z','H'));
select * from table(coll_of_varchar2('A','B','C') multiset union all coll_of_varchar2('A','Z','H'));

-- eelemnt from col1 not in col2
select * from table(coll_of_varchar2('A','A','B','C') multiset except all coll_of_varchar2('A','Z','H'));
select * from table(coll_of_varchar2('A','A','B','C') multiset except distinct coll_of_varchar2('A','Z','H'));

-- check if col1 is subset col2
select * from dual where coll_of_varchar2('B','A') submultiset coll_of_varchar2('A','Z','H','B');

我试图做一些非常类似的事情,但第一个列表是使用listagg创建的同一查询上的另一个字段,包含整数,如:

LISTAGG(my_first_list,', ') WITHIN GROUP(
        ORDER BY
            my_id
    ) my_first_list
并将其与我已返回的所有其他字段一起返回

SELECT 
CASE WHEN my_first_list IN ('1,2,3') THEN 1 ELSE 0 END "FOUND"
FROM DUAL

我试图做一些非常类似的事情,但第一个列表是使用listagg创建的同一查询上的另一个字段,包含整数,如:

LISTAGG(my_first_list,', ') WITHIN GROUP(
        ORDER BY
            my_id
    ) my_first_list
并将其与我已返回的所有其他字段一起返回

SELECT 
CASE WHEN my_first_list IN ('1,2,3') THEN 1 ELSE 0 END "FOUND"
FROM DUAL

左边的不是列表,而是“元组”。Oracle中没有“列表”。PL/SQL集合(varray、嵌套表等)中的字符串“A”、“B”、“C”在哪里?在标准关系表中?或者在Oracle中确实存在的其他数据库对象中?正如我所说,“列表”在Oracle中不是一种对象类型。左边的不是列表,而是一个“元组”。Oracle中没有“列表”。PL/SQL集合(varray、嵌套表等)中的字符串“A”、“B”、“C”在哪里?在标准关系表中?或者在Oracle中确实存在的其他数据库对象中?正如我所说,“列表”不是Oracle中的对象类型。