Supprimer un caractère à partir d'une position donnée sur Oracle
Est-il de toute façon pour supprimer un caractère à partir d'une position donnée?
Disons que mon mot est:
CRÊPES
Et je veux enlever la 2ème lettre (dans ce cas, 'A'), donc je veux PNCAKES que mon retour.
Traduire ne marche pas pour cela.
Remplacer ne marche pas pour cela.
Regex est sacrément compliqué...
Idées?
Vous devez vous connecter pour publier un commentaire.
Exemple:
Je n'ai pas une instance Oracle pour le test, pourriez avoir à modifier le -1/+1 pour obtenir la position correcte.
Références:
Vous devriez sérieusement envisager de l'utiliser
regexp_replace
. Il est plus court et pas si compliqué qu'il y paraît à première vue:Le modèle
^(.{1}).
cherche depuis le début de la chaîne ( notée par^
) pour exactement un (.{1}
) de imprimable ou uprintable caractères suivis par de nouveau juste un de ces caractères (.
). Le "exact" est fermé de parenthèse de sorte qu'il peut être référencé en tant que match du groupe, de par leur nombre dans la troisième fonction de l'argument (\1
). Ainsi, l'ensemble de la sous-chaîne compensée par regexp est "PA", mais nous référence "P". Le reste de la chaîne reste intacte. Si le résultat est "PNCAKES'.Si vous souhaitez supprimer le N-ième caractère de la chaîne à remplacer le nombre " un " dans le modèle (utilisé pour enlever la deuxième personnage) avec la valeur de N-1.
C'est bon pour le programmeur ou n'importe quel type de spécialiste pour se familiariser avec les expressions régulières comme il lui donne beaucoup de pouvoir travailler avec les entrées de texte.
Ou utiliser un custom made SplitAtPos à l'aide de la fonction SUBSTR. L'avantage est qu'il fonctionne encore sur Oracle v9.
oui REMPLACER et de SUBSTR dans le bon de commande fera l'affaire.
le résultat final devrait être une concaténation de la SUBSTR avant d'enlever le char de la SUBSTR après le char.
si la colonne entière est un seul mot, alors vous pouvez juste faire une mise à jour, si le mot est dans une autre chaîne de caractères, vous pouvez utiliser le REMPLACER comme un wrapper.
Vous pouvez utiliser quelque chose comme cela dans
pl/SQL