2016-10-11 4 views
0

Ich habe eine Tabelle wie diese.Anzahl der Datensätze in jeder Zeile zurückgeben SQL

SQL> SELECT * FROM FRUIT; 

F_NAME 
---------- 
APPLE 
PPPALEP 
APLEE 
PPAALLEEPP 
ornPpfpP  
PPdhppPP 

Above ist meine Quelltabelle und ich mag unter output.If i ‚P‘ in vielgestaltigem gebe beide wie einschließlich Kapital und klein. Ich möchte nur 'P' von jeder Zeile zählen.

OUTPUT 
------ 
F_NAME  COUNT 
------  ----- 
APPLE   2 
PPPALEP  4 
APLEE   1 
PPAALLEEPP 4 
ornPpfpP  4 
PPdhppPP  6 

Vielen Dank im Voraus.

Antwort

0

Sie können die Anzahl der Vorkommen zählen, indem Sie P durch Leerzeichen ersetzen und die Länge der ersetzten Zeichenfolge von der ursprünglichen Zeichenfolge subtrahieren.

select f_name,length(f_name)-length(replace(f_name,'P','')) cnt 
from fruit 

Edit: Per OP Kommentar zählen sowohl P und p verwenden upper oder lower wenn das Zeichen mit einem leeren String ersetzt.

select f_name,length(f_name)-length(replace(upper(f_name),'P','')) cnt 
from fruit 
+0

Diese Abfrage funktioniert gut für nur zählen Hauptstadt 'P' .Wenn ich gebe 'P' in Multiform wie einschließlich Kapital und klein beide. Ich möchte sowohl "P" (wie Kapital und klein) aus jeder Reihe zählen. Was ist dann die Logik? –

+0

siehe bearbeiten ... –

+0

Vielen Dank im Voraus @vkp –

2

Oracle hat die sehr bequem regexp_count(). Also:

+0

Ich wusste nicht über diese Funktion. Vielen Dank. Ich sehe es wurde in Orakel 11g eingeführt. –

+0

Ich habe viel mit regexp_count versucht, aber es funktioniert nicht in Oracle 10g. –

Verwandte Themen