Oracle: une requête, qui compte les occurrences de tous les caractères non alphanumériques dans une chaîne de caractères

Quelle serait la meilleure façon de compter les occurrences de tous les caractères non alphanumériques qui apparaissent dans une chaîne de caractères dans une base de données Oracle colonne.

Lors de la tentative de trouver une solution, j'ai réalisé que j'avais une requête qui n'a aucun rapport avec le problème, mais j'ai remarqué que je pouvais le modifier dans l'espoir de résoudre ce problème. Je suis venu avec cette:

SELECT  COUNT (*), SUBSTR(TITLE, REGEXP_INSTR(UPPER(TITLE), '[^A-Z,^0-9]'), 1)
FROM    TABLE_NAME
WHERE   REGEXP_LIKE(UPPER(TITLE), '[^A-Z,^0-9]')
GROUP BY    SUBSTR(TITLE, REGEXP_INSTR(UPPER(TITLE), '[^A-Z,^0-9]'), 1)
ORDER BY COUNT(*) DESC;

Cela fonctionne pour trouver le PREMIER non caractères alphanumériques, mais je voudrais compter les occurrences dans l'ensemble de la chaîne, et pas seulement la première occurrence. E. g. actuellement ma requête de l'analyse "(string)" trouver une parenthèse ouverte, mais j'en ai besoin pour trouver une parenthèse ouverte et une fermée la parenthèse.

Unforunately j'ai besoin d'être en mesure de trouver combien d'événements de chaque symbole a été trouvé, quelqu'un a des idées pour cela? J'ai essayé d'arriver dans le dernier paragraphe de ma question.
Avez-vous besoin le nombre de caractères non alphanumériques ou le comte de chaque caractère non-alphanumérique? Par exemple, pour la chaîne "(1(2)3)", voulez-vous que le résultat soit à 4 ou à en quelque sorte indiquer 2 "(" et 2 ")"?
oui 2 ( et 2 ), cependant, j'ai décidé d'écrire un petit pl-sql procédure pour le faire pour moi, que la vitesse n'était pas un gros problème (je n'avais que va diriger cette fois à des fins de conception), si ce n'est plus un problème.

OriginalL'auteur Moz | 2011-01-28