CHAR(n): Pour les chaînes de caractères à longueur fixe, où `n` est le nombre maximal de caractères. Les valeurs plus courtes sont complétées par des espaces. Ce type ne supporte pas les valeurs NULL ANSI SQL.
VARCHAR(n): Pour les chaînes de caractères à longueur variable. Les valeurs ne sont pas complétées par des espaces. Idéal pour des données dont la longueur varie. `VARCHAR(*)` peut être utilisé quand la longueur maximale n'est pas connue, mais cela peut entraîner une conversion en `CHAR(32767)` lors de la copie vers des bibliothèques ne supportant pas `VARCHAR`.
DOUBLE: Représente un nombre flottant à double précision (64 bits) permettant une grande magnitude et une haute précision, et supporte les valeurs manquantes.
Les exemples utilisent des données générées (datalines) ou SASHELP, garantissant leur autonomie et exécution directe.
1 Bloc de code
DATA STEP Data
Explication : Cet exemple simple crée une table CAS nommée `fixed_char` avec une colonne `name` de type `CHAR(10)`. Les valeurs assignées sont de longueur inférieure ou égale à 10 caractères et seront complétées par des espaces à droite si nécessaire. `proc print` est utilisé pour afficher la table.
Copié !
/* Création d'une table CAS avec une colonne CHAR de longueur fixe */
cas libref=casuser;
data casuser.fixed_char;
length name char(10);
name = 'Alice';
output;
name = 'Bob';
output;
run;
/* Affichage du contenu de la table pour vérifier */
proc print data=casuser.fixed_char;
run;
/* Nettoyage */
proc cas;
table.dropTable result=r / name='fixed_char' caslib='casuser';
print r;
run;
quit;
1
/* Création d'une table CAS avec une colonne CHAR de longueur fixe */
2
cas libref=casuser;
3
4
DATA casuser.fixed_char;
5
LENGTH name char(10);
6
name = 'Alice';
7
OUTPUT;
8
name = 'Bob';
9
OUTPUT;
10
RUN;
11
12
/* Affichage du contenu de la table pour vérifier */
Explication : Cet exemple utilise le type `VARCHAR(50)` pour la colonne `description`. On observe que les valeurs sont stockées avec leur longueur réelle sans padding, même si elles sont plus courtes que la longueur maximale définie. `proc columnInfo` est utilisé pour inspecter les attributs des colonnes, y compris leurs longueurs.
Copié !
/* Création d'une table CAS avec une colonne VARCHAR de longueur explicite */
cas libref=casuser;
data casuser.varying_char_example;
length description varchar(50);
description = 'Ceci est une description courte.';
output;
description = 'Ceci est une description beaucoup plus longue qui utilise plus de caractères.';
output;
description = 'Court';
output;
run;
/* Affichage du contenu et des informations sur les colonnes pour vérifier les longueurs réelles */
proc print data=casuser.varying_char_example;
run;
proc cas;
table.columnInfo result=c / table='varying_char_example' caslib='casuser';
print c;
run;
quit;
/* Nettoyage */
proc cas;
table.dropTable result=r / name='varying_char_example' caslib='casuser';
print r;
run;
quit;
1
/* Création d'une table CAS avec une colonne VARCHAR de longueur explicite */
2
cas libref=casuser;
3
4
DATA casuser.varying_char_example;
5
LENGTH description varchar(50);
6
description = 'Ceci est une description courte.';
7
OUTPUT;
8
description = 'Ceci est une description beaucoup plus longue qui utilise plus de caractères.';
9
OUTPUT;
10
description = 'Court';
11
OUTPUT;
12
RUN;
13
14
/* Affichage du contenu et des informations sur les colonnes pour vérifier les longueurs réelles */
Explication : Cet exemple illustre l'utilisation du type `DOUBLE` pour stocker des nombres avec une grande précision, y compris des nombres très petits et très grands, ainsi que des valeurs manquantes. `proc columnInfo` confirme le type de colonne, et `table.fetch` est utilisé pour récupérer et afficher les données, démontrant la gestion des valeurs manquantes et la précision des flottants.
Copié !
/* Création d'une table CAS avec une colonne DOUBLE incluant des valeurs manquantes et des nombres à haute précision */
cas libref=casuser;
data casuser.double_advanced;
input num_val;
datalines;
100.123456789
.
1.23456789123456789E-10
-5.6789123456789E+12
;
run;
/* Affichage des informations sur les colonnes pour confirmer le type DOUBLE */
proc cas;
table.columnInfo result=c / table='double_advanced' caslib='casuser';
print c;
run;
/* Récupération et affichage des données pour montrer la précision et les manquants */
proc cas;
table.fetch result=f / table='double_advanced' caslib='casuser';
print f;
run;
quit;
/* Nettoyage */
proc cas;
table.dropTable result=r / name='double_advanced' caslib='casuser';
print r;
run;
quit;
1
/* Création d'une table CAS avec une colonne DOUBLE incluant des valeurs manquantes et des nombres à haute précision */
2
cas libref=casuser;
3
4
DATA casuser.double_advanced;
5
INPUT num_val;
6
DATALINES;
7
100.123456789
8
.
9
1.23456789123456789E-10
10
-5.6789123456789E+12
11
;
12
RUN;
13
14
/* Affichage des informations sur les colonnes pour confirmer le type DOUBLE */
Explication : Cet exemple avancé montre comment les types `VARCHAR(*)` et `CHAR(n)` se comportent lors de la copie d'une table CAS vers une bibliothèque SAS standard (non-CAS). On observe que `VARCHAR(*)` peut se convertir en une colonne `CHAR(32767)` dans un contexte non-CAS, tandis que `CHAR(n)` conservera sa longueur fixe, tronquant les données si elles sont trop longues. `PROC CONTENTS` est utilisé pour vérifier les longueurs des colonnes après la copie.
Copié !
/* Initialise une session CAS */
cas libref=casuser;
/* Crée une table CAS avec une colonne VARCHAR(*) */
data casuser.varchar_star_orig;
length comments varchar(*);
comments = 'Un commentaire.'; output;
comments = 'Un commentaire très long, dont la taille maximale n''est pas prédéfinie, pour observer l''impact lors de la copie.'; output;
run;
/* Crée une table CAS avec une colonne CHAR(10) */
data casuser.char_fixed_orig;
length short_text char(10);
short_text = 'Hello'; output;
short_text = 'WorldLonger'; /* Sera tronqué */
output;
run;
/* Copie les tables CAS vers une bibliothèque de travail SAS standard */
/* Remarque: La bibliothèque WORK est un chemin local non-CAS. */
/* Pour une exécution hors de SAS Studio/Viya, ajuster le LIBNAME si nécessaire */
libname work clear;
data work.varchar_star_copy;
set casuser.varchar_star_orig;
run;
data work.char_fixed_copy;
set casuser.char_fixed_orig;
run;
/* Vérifie les attributs des colonnes dans la table copiée */
proc contents data=work.varchar_star_copy varnum; run;
proc contents data=work.char_fixed_copy varnum; run;
/* Affiche le contenu de la table CHAR pour voir la troncature */
proc print data=work.char_fixed_copy;
run;
/* Nettoyage des tables CAS */
proc cas;
table.dropTable result=r / name='varchar_star_orig' caslib='casuser';
print r;
table.dropTable result=r / name='char_fixed_orig' caslib='casuser';
print r;
run;
quit;
1
/* Initialise une session CAS */
2
cas libref=casuser;
3
4
/* Crée une table CAS avec une colonne VARCHAR(*) */
5
DATA casuser.varchar_star_orig;
6
LENGTH comments varchar(*);
7
comments = 'Un commentaire.'; OUTPUT;
8
comments = 'Un commentaire très long, dont la taille maximale n''est pas prédéfinie, pour observer l''impact lors de la copie.'; OUTPUT;
9
RUN;
10
11
/* Crée une table CAS avec une colonne CHAR(10) */
12
DATA casuser.char_fixed_orig;
13
LENGTH short_text char(10);
14
short_text = 'Hello'; OUTPUT;
15
short_text = 'WorldLonger'; /* Sera tronqué */
16
OUTPUT;
17
RUN;
18
19
/* Copie les tables CAS vers une bibliothèque de travail SAS standard */
20
/* Remarque: La bibliothèque WORK est un chemin local non-CAS. */
21
/* Pour une exécution hors de SAS Studio/Viya, ajuster le LIBNAME si nécessaire */
22
LIBNAME work clear;
23
24
DATA work.varchar_star_copy;
25
SET casuser.varchar_star_orig;
26
RUN;
27
28
DATA work.char_fixed_copy;
29
SET casuser.char_fixed_orig;
30
RUN;
31
32
/* Vérifie les attributs des colonnes dans la table copiée */
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Le passage à SAS Cloud Analytic Services (CAS) introduit des nuances fondamentales dans la gestion des données. Contrairement au moteur SAS 9 traditionnel, CAS est optimisé pour le traitement en mémoire, ce qui rend le choix du type de colonne déterminant pour la performance et l'intégrité de vos analyses. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.