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

Hvordan får man dummy-værdi for XML-tom tag i tabel ved hjælp af Oracle?

left join ... on 1=1

select  a.test 

from                demotable b 

        left join   XMLTable
                    (
                        '//test' 
                        passing xmltype(b.xmlTagColumn) 
                        columns 
                            test varchar(10) path '.'
                    ) a 

        on         1=1
;        
 

Demo

create table demotable (id int,xmlTagColumn varchar2(100));

insert into demotable (id,xmlTagColumn) values (1,'<X><test>123</test></X>');
insert into demotable (id,xmlTagColumn) values (2,'<Y><test>456</test></Y>');
insert into demotable (id,xmlTagColumn) values (3,'<Z><prod>123</prod></Z>');
 
select  b.id
       ,a.test 

from                demotable b 

        left join   XMLTable
                    (
                        '//test' 
                        passing xmltype(b.xmlTagColumn) 
                        columns 
                            test varchar(10) path '.'
                    ) a 

        on         1=1
;        
 
+----+--------+ | ID | TEST | +----+--------+ | 1 | 123 | +----+--------+ | 2 | 456 | +----+--------+ | 3 | (null) | +----+--------+


  1. Oracle-forespørgsel ved hjælp af 'like' på kolonne med indekseret tal, dårlig ydeevne

  2. Django views.py Version af SQL Join med Multi Table Query

  3. Sådan sender du flere variabler til PHP med jQuery

  4. Forbedring af MySQL-indekseffektivitet - kolonner i flere indekser?