Oracle
 sql >> база данни >  >> RDS >> Oracle

Запитване с помощта на оператор в колона VARCHAR2

Този вид динамичен SQL в SQL може да бъде създаден с DBMS_XMLGEN.getXML . Въпреки че заявката изглежда малко странно, така че може да помислите за различен дизайн.

Първо, създадох примерна таблица и ред, използвайки вашия DDL. Не съм сигурен точно какво се опитвате да направите с условията, затова ги опростих в два реда с по-прости условия. Първият ред отговаря на първото условие и нито един ред не отговаря на второто условие.

--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;

Ето голямата заявка и тя връща само първия ред, който отговаря само на първото условие.

--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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Импортирайте една схема в друга нова схема - Oracle

  2. Заобиколно решение за външно свързване с IN оператор в Oracle

  3. как да актуализирате данни с помощта на заявка за хибернация, имаща родителско свойство в клауза where

  4. SQL заявка с CASE и групиране по

  5. sql (oracle) отчита броя на припокриващите се интервали