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

Hent poster fra en bestemt kolonne i Oracle

Oracle-opsætning :

OPRET TABEL tabelnavn ( S_NO, id, Pid ) ASSELECT 1, 123, 'PAQ123' FRA DUAL UNION ALLSELECT 2, 433, 'WSD3FF' FRA DUAL UNION ALLE VÆLG 3, 565, 'PAS45E' FRA DUAL UNION ALLSELECT 4, 123, 'PAQ123X' FRA DUAL UNION ALLSELECT 5, 433, 'WSD3FFY' FRA DUAL UNION ALLSELECT 6, 123, 'PAQ123Z' FRA DUAL; 

Forespørgsel :

SELECT *FROM ( SELECT t.*, ( SELECT COUNT(*) FROM table_name x WHERE t.id =x.id AND LENGTH( t.Pid ) 0;

Output :

S_NO ID PID NUM_MATCHES---------------- ---------- ------- ---------- 1 123 PAQ123 2 2 433 WSD3FF 1

Hvis du ønsker at få kampene så kan du bruge en samling:

OPRET TYPE-strengliste SOM TABEL OVER VARCHAR2(100);/ 

Forespørgsel :

SELECT *FROM ( SELECT t.*, CAST( MULTISET( SELECT PID FROM table_name x WHERE t.id =x.id AND LENGTH( t.Pid )

eller (da jeg ikke er sikker på MULTISET er i 10g):

SELECT *FROM ( SELECT t.*, CAST( ( SELECT COLLECT( PID ) FROM table_name x WHERE t.id =x.id AND LENGTH( t.Pid )

Output

S_NO ID PID MATCHES ---------- ---------- ------- ------------- ----------------------- 1 123 PAQ123 TEST.STRINGLIST('PAQ123X','PAQ123Z') 2 433 WSD3FF TEST.STRINGLIST('WSD3FFY')


  1. MySQL, Få brugerrangering

  2. JOIN Multiple Table baseret på tidsstempel og en anden betingelse

  3. mysql pivot-forespørgselsresultater med GROUP BY

  4. Udfyld værdier i en rullemenu baseret på et andet rullemenuvalg ved hjælp af JSTL