sql >> Database teknologi >  >> RDS >> Oracle

Forespørg ved hjælp af et udsagn i en VARCHAR2-kolonne

Denne form for dynamisk SQL i SQL kan oprettes med DBMS_XMLGEN.getXML . Selvom forespørgslen ser lidt mærkelig ud, så du måske ønsker at overveje et andet design.

Først oprettede jeg en prøvetabel og en række ved hjælp af din DDL. Jeg er ikke sikker på præcis, hvad du prøver at gøre med betingelserne, så jeg forenklede dem til to rækker med enklere betingelser. Den første række matcher den første betingelse, og ingen af ​​rækkerne matcher den anden betingelse.

--Create sample table and row that matches the condition.
CREATE TABLE test_tab(
    date_column DATE,
    frequency NUMBER,
    test_statement VARCHAR2(255)
)
/

insert into test_tab values(sysdate, 1, 'frequency = 1');
insert into test_tab values(sysdate, 2, '1=2');
commit;
 

Her er den store forespørgsel, og den returnerer kun den første række, som kun matcher den første betingelse.

--Find rows where ROWID is in a list of ROWIDs that match the condition. select * from test_tab where rowid in ( --Convert XMLType to relational data. select the_rowid from ( --Convert CLOB to XMLType. select xmltype(xml_results) xml_results from ( --Create a single XML file with the ROWIDs that match the condition. select dbms_xmlgen.getxml(' select rowid from test_tab where '||test_statement) xml_results from test_tab ) where xml_results is not null ) cross join xmltable ( '/ROWSET/ROW' passing xml_results columns the_rowid varchar2(128) path 'ROWID' ) );

  1. Udløser til at forbinde flere borde

  2. Betinget aggregeringsforespørgsel med en gruppe efter

  3. undgå at sortere efter MYSQL IN søgeordet

  4. Brug af store bogstaver i dag- og månedsnavne ved formatering af datoer i Oracle