Ich behalte Daten in Tabellenzeilen wie folgt;Oracle Regulärer Ausdruck anstelle der INSTR-Funktion
t_course
+------+------------------------------------------+
| sid | courses |
+------+------------------------------------------+
| 1 | cs101.math102.ns202-2.phy104 |
+------+------------------------------------------+
| 2 | cs101.math201.ens202-1.phy104-10.chm105 |
+------+------------------------------------------+
| 3 | cs101.ns202-2.math201.ens202-1.phy104 |
+------+------------------------------------------+
Jetzt möchte ich die Summe nehmen von Kursen NS202 und ens202 in der gleichen Zeit erwähnt. Normalerweise sollte es nur Datensatz bringen, die ID ist 3, es bringt alle Datensätze (wegen Instr). Ich habe viele Methoden dafür verwendet, aber es funktioniert nicht. Beispielsweise;
select count(*) from
t_course
where
instr(courses, 'ns202') > 0
and instr(courses, 'ens202') > 0;
Above Code funktioniert nicht richtig, weil es NS202 nimmt aber ens202 enthält NS202 in sich.
Ich versuchte mit regulären Ausdrücken, ich konvertierte alle Kurs in Zeile (Split), aber das hat sowohl Arbeitslogik gebrochen und verlangsamt.
Wie kann ich dies mit regulären Ausdrücken anstelle von Instr entsprechend beginnen mit (zum Beispiel ns202%) Logik? (Beginnt mit ns202, zuerst oder nach dem Punkt)
wollen Sie Zeilen, die sowohl 'ns202' als auch' ens202' haben? –
@vkp, Ja, ich möchte nur die Summe der Datensätze, die sowohl ns202 und ens202 enthält. –
Was meinst du mit * Summe der Datensätze * hier? –