Supprimer les caractères spéciaux d'une table. La fonction COMPRESS
La fonction COMPRESS peut se montrer très utile et performante pour supprimer des "types" de caractères.
Syntaxe:
COMPRESS(source<, characters><, modifier(s)>)
- Source : Variable à modifier
- Characters : Liste des caractères sur lesquels la fonction a un impact (mettre "" permet d'impacter toute la variable)
- Modifier(s) : Un ou plusieurs modifier(s) à utiliser pour appliquer la fonction
Supprimer des espaces
Son utilisation de base permet de supprimer les "blank" dans vos variables alphanumériques.
data _null_;
var=' Chaine de caracteres!!. 54' ;
var_compressed = compress(var,'');
put var_compressed=;
/* --> var_compressed=Chainedecaracteres!!.54 */
run;
En soit cette manipulation peut être faite par d'autres fonctions comme:
- STRIP() qui supprimer les leading et trailing blanks
- COMPBL() qui supprimer les doubles espaces
Pour supprimer d'autres "types" de caractères
Pour cibler des types de caractères il faut utiliser les modifiers de la fonction.
Voici la liste des modifiers que j'utilise le plus:
Modifiers | Définition | Exemple | Résultat |
---|---|---|---|
a | Compress les lettres en majuscule & minuscule | compress(var,"","a"); | !!.54 |
ak | Compress les chiffres et les caractères spéciaux | compress(var,"","ak"); | Chaine de caracteres |
kd | Compress tout sauf les numéros | compress(var,"","kd"); | 54 |
d | Compress les numéros + espaces | compress(var,"","d"); | Chainedecaracteres!!. |
i | Compress une liste de caractères peut importe la casse | compress(var,"ac","i"); | hine de rteres!!. 54 |
k | Compress tout sauf les caractères spécifiés | compress(var,"ac","k"); | acaac |
l | Compress les lettres en minuscule + espaces | compress(var,"","l"); | C!!.54 |
u | Compress les lettres en majuscule + espaces | compress(var,"","u"); | hainedecaracteres!!.54 |
s | Compress les espaces | compress(var,"","s"); | Chainedecaracteres!!.54 |
p | Compress la ponctuation + espaces | compress(var,"","p"); | Chainedecaracteres54 |
Vous pouvez combiner plusieurs modifiers dans une seule fonction COMPRESS
data _null_;
var=' Chaine de caracteres!!. 54' ;
var_compressed = compress(var,'','ak kd');
put var_compressed=;
/* --> var_compressed=Chaine de caracteres 54 */
run;
Pour certain usages vous pouvez aussi utiliser la fonction TRANWRD() qui permet de remplacer une chaîne par une autre.