Compter le nombre d'occurrences d'un caractère dans Oracle SQL
Comment puis-je compter le nombre de fois qu'un personnage en particulier, se produit dans une colonne Oracle? Par exemple, si j'ai une table FOO
qui a comme a,ABC,def
et 2,3,4,5
, je veux compter le nombre de fois qu'une virgule apparaît dans les données.
CREATE TABLE foo (
str varchar2(30)
);
INSERT INTO foo VALUES( 'a,ABC,def' );
INSERT INTO foo VALUES( '2,3,4,5' );
commit;
La sortie que je veux, c'est
str cnt
a,ABC,def 2
2,3,4,5 3
à l'aide de pl/sql, j'ai obtenu.
de ne pas obtenir de l'aide de oracle sql..
Essayez l'option à partir de ce lien blogs.oracle.com/aramamoo/entry/...
de ne pas obtenir de l'aide de oracle sql..
Essayez l'option à partir de ce lien blogs.oracle.com/aramamoo/entry/...
OriginalL'auteur Sharath | 2012-05-27
Vous devez vous connecter pour publier un commentaire.
L'un de l'habitude des astuces pour cela est d'utiliser une combinaison de
length
etreplace
:remplacer
sans un troisième argument suffit d'enlever le caractère.OriginalL'auteur Mat
En fonction de votre version Oracle (
regexp_count
a été introduit en 11.1), j'aurais tendance à trouver plus clair pour faire quelque chose commeque vous pouvez voir avec votre table
Seulement dans la Base de données Oracle 11g+
Salut, quand j'ai essayé
select regexp_count('AB|C|D%E','|') from dual;
il est revenu 9. Pourquoi est-ce qui se passe pour le tuyau?vous devez échapper à la pipe, car c'est un caractère réservé dans les expressions régulières (même pour les périodes et les autres):
select regexp_count('AB|C|D%E','\|') from dual;
OriginalL'auteur Justin Cave