gpt4 book ai didi

sql - 我可以将查询本身用作 pl/sql 中的过滤器吗?

转载 作者:行者123 更新时间:2023-12-04 08:53:48 25 4
gpt4 key购买 nike

我知道我没有在问题标题中说清楚。让我解释。
假设我有一张 table SOURCE_TABLE有 1 列,如下所示:

Filter 
------------------|
Name='John'
Surname = 'Smith'
Age = '25'
我想用这个表作为过滤器。像下面这样:
SELECT * FROM TARGET_TABLE WHERE (SELECT FILTER FROM SOURCE_TABLE)
我听说评估功能可能对我有帮助,但老实说我不明白如何。
你知道我可以像上面一样使用列作为过滤源的任何方法吗?

编辑1:
DECLARE 
my_filter VARCHAR2(100);
my_query VARCHAR2(500);
BEGIN
my_query := 'SELECT FILTER FROM SOURCE_TABLE WHERE ROWNUM=1';
EXECUTE IMMEDIATE my_query INTO my_filter;
EXECUTE IMMEDIATE 'SELECT * FROM TARGET_TABLE WHERE '|| my_filter;
END;
@Sujitmohanty30学了以上才想出来的 EXECUTE IMMEDIATE .但是我偶然发现了一个问题。关于最终结果,这需要是动态的,我想在最后看到选择查询的结果。

最佳答案

假设我们有这两个表:

create table TARGET_TABLE(name varchar2(30), surname varchar2(30));
insert into TARGET_TABLE(name,surname) values ('John', 'Doe');
insert into TARGET_TABLE(name,surname) values ('Ann', 'Smith');
insert into TARGET_TABLE(name,surname) values ('Steven', 'Feuerstein');
insert into TARGET_TABLE(name,surname) values ('Steven', 'King');
commit;

create table SOURCE_TABLE(filter) as
select q'[name='John']' from dual union all
select q'[name='Ann']' from dual union all
select q'[name='Steven' and surname='King']' from dual union all
select q'[surname='Feuerstein']' from dual;
然后您可以使用 xmltable 和 dbms_xmlgen.getXMLtype 动态获取此类行:
https://dbfiddle.uk/?rdbms=oracle_18&fiddle=72abdf18b149cf30882cb4e1736c9c33
select *
from SOURCE_TABLE
, xmltable(
'/ROWSET/ROW'
passing dbms_xmlgen.getXMLtype('select * from TARGET_TABLE where '|| SOURCE_TABLE.filter)
columns
name varchar2(30) path 'NAME',
surname varchar2(30) path 'SURNAME'
) x;
结果:
FILTER                           NAME                           SURNAME
-------------------------------- ------------------------------ ------------------------------
name='John' John Doe
name='Ann' Ann Smith
name='Steven' and surname='King' Steven King
surname='Feuerstein' Steven Feuerstein

关于sql - 我可以将查询本身用作 pl/sql 中的过滤器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63950437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com