Oracle requête pour trouver toutes les occurrences d'un charcter dans une chaîne de caractères

Je dois écrire un Oracle de la requête en crapaud pour trouver toutes les occurrences d'un caractère dans une chaîne. Par exemple, si je suis à la recherche de R dans la chaîne SSSRNNSRSSR, il doit retourner les positions 4, 8 et 11.

Je suis nouveau à l'Oracle et j'ai essayé cette.

select instr(mtr_ctrl_flags, 'R', pos + 1, 1) as pos1 
  from mer_trans_reject  
 where pos in ( select instr(mtr_ctrl_flags, 'R', 1, 1) as pos 
                  from mer_trans_reject
                       );

mtr_ctrl_flags est le nom de la colonne. J'obtiens un message d'erreur indiquant que pos est un identifiant invalide.

  • Défi intéressant. Ce serait un très étrange requête, ou vous aurez à écrire une procédure stockée. Ou il y a toujours ce dernier, malheureux possibilité qu'il existe une fonction très pratique je ne sais pas de...
  • (Auto-écrite) fonction pourrait être plus efficace que l'utilisation de tout type de requête récursive.
  • Il pourrait être, mais ne sous-estimez pas la surcharge d'appels de fonctions. Il serait intéressant de tester, si, mais actuellement, je n'ai que sqlfiddle, et je doute si c'est fiable plate-forme d'analyse comparative.