Vous devriez fortement envisager d'utiliser regexp_replace
. Il est plus court et pas si compliqué qu'il n'y paraît au premier coup d'œil:
SELECT REGEXP_REPLACE(S, '^(.{1}).', '\1')
FROM (
SELECT 'PANCAKES'
FROM DUAL
)
Le modèle ^(.{1}).
recherches depuis le début de la chaîne (notée ^
) pour exactement un (.{1}
) de caractères imprimables ou uprintable suivi encore un de ces caractères (.
). La partie "exacte" est fermée entre parenthèses, de sorte qu'elle peut être référencée comme groupe de correspondance par son numéro dans l'argument de la troisième fonction (\1
). Donc toute la sous-chaîne correspondant à regexp est 'PA', mais nous ne faisons référence qu'à 'P'. Le reste de la chaîne reste intact. Donc le résultat est 'PNCAKES'.
Si vous souhaitez supprimer le caractère n-ième de la chaîne, remplacez simplement le nombre «un» dans le modèle (utilisé pour supprimer le deuxième caractère) par la valeur N-1.
Il est bon pour le programmeur ou tout autre informaticien de se familiariser avec les expressions régulières, car cela lui donne beaucoup de pouvoir pour travailler avec des entrées de texte.
REGEXP_REPLACE est une option pour Oracle 10g +: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions130.htm#SQLRF06302 –
Works. Merci! Je pensais à regex mais ils sont plutôt compliqués. – alex
@alex: Je recommande fortement http://www.regular-expressions.info/ - c'est une excellente ressource pour être plus à l'aise avec les regex. –