ASCIISTR |
Chaîne ASCII |
|---|---|
| Oracle Database SQL | Oracle 10g Release 2 (10.2) ou supérieure |
Syntaxe
| asciistr(chaine) |
Paramètres
| Nom | Description |
|---|---|
| chaine | Ce paramètre permet d'indiquer la chaîne de caractères à traiter. |
Description
Cette fonction retourne une chaîne de caractères contenant les numéros du code ASCII de chacun des caractères d'une chaîne de caractères spécifié.
Remarques
- Convertit une chaîne Unicode en ASCII lisible avec échappement : La fonction ASCIISTR(chaine) permet de transformer les caractères non-ASCII (au-delà du code 127) en séquences d'échappement Unicode du type \xxxx. Cela facilite l'exportation ou l'analyse de chaînes contenant des caractères spéciaux.
- Les caractères ASCII (code ≤ 127) restent inchangés : Les lettres, chiffres et symboles standards (comme A à Z, 0 à 9,...) sont conservés tels quels dans la sortie de la fonction. Seuls les caractères étendus (accents, symboles internationaux,...) sont convertis avec une séquence de type \00E9.
- Très utile pour les systèmes ne supportant pas Unicode : Cette fonction est essentielle lorsqu'on veut encoder des chaînes pour des systèmes anciens ou limités à l'ASCII 7 bits. Elle permet d'assurer la compatibilité descendante tout en conservant la trace des caractères non-ASCII sous une forme portable.
- Retourne une chaîne VARCHAR2 avec des séquences échappées : Le résultat est une chaîne de type VARCHAR2, avec des \xxxx pour chaque caractère Unicode détecté. Par exemple, é devient \00E9. Cela n'affiche pas l'équivalent visuel, mais bien le code UTF-16 en hexadécimal préfixé par une barre oblique inversée.
- Utile pour le diagnostic ou la comparaison de contenu texte : ASCIISTR est souvent utilisé pour détecter les caractères problématiques dans des colonnes texte, notamment dans les noms ou adresses qui peuvent contenir des symboles accentués, des caractères chinois ou arabes,...
- N'est pas équivalent à TO_CHAR(..., 'US7ASCII') : Alors que TO_CHAR(..., 'US7ASCII') tente de convertir une chaîne dans un ensembles de caractères, ASCIISTR n'essaie pas de translittérer - il encode littéralement ce qu'il ne comprend pas en ASCII. C'est donc une méthode plus sûre pour la conservation des données.
- Peut être inversée partiellement avec des traitements programmatiques : Même si Oracle n'offre pas de fonction native pour reconvertir les séquences \xxxx en caractères Unicode, on peut le faire en PL/SQL ou à l'aide de fonctions personnalisées. Cela rend ASCIISTR adaptée à des cycles encode/décode contrôlés.
- Fonctionne sur tous les types de données caractère (CHAR, VARCHAR2,...) : Elle accepte des entrées sous différentes formes textuelles. Cela en fait un outil polyvalent utilisable aussi bien dans les requêtes SQL que dans des scripts PL/SQL, ou même lors de traitements en chaîne via des vues ou des transformations XML.
Exemple
Voici un exemple montrant le valeur correspondance au début et la fin de l'alphabet en majuscule :
- SELECT ASCIISTR('Montréal') FROM DUAL;
on obtiendra le résultat suivant :
| ASCIISTR('MONTRÉAL') |
| Montr\00E9al |
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015