CHAR(n): Para cadenas de caracteres de longitud fija, donde `n` es el número máximo de caracteres. Los valores más cortos se rellenan con espacios. Este tipo no admite valores NULL ANSI SQL.
VARCHAR(n): Para cadenas de caracteres de longitud variable. Los valores no se rellenan con espacios. Ideal para datos cuya longitud varía. Se puede usar `VARCHAR(*)` cuando no se conoce la longitud máxima, pero esto puede resultar en una conversión a `CHAR(32767)` al copiar a bibliotecas que no admiten `VARCHAR`.
DOUBLE: Representa un número de coma flotante de doble precisión (64 bits) que permite una gran magnitud y alta precisión, y admite valores faltantes.
Los ejemplos utilizan datos generados (datalines) o SASHELP, garantizando su autonomía y ejecución directa.
1 Bloque de código
DATA STEP Data
Explicación : Este ejemplo simple crea una tabla CAS llamada `fixed_char` con una columna `name` de tipo `CHAR(10)`. Los valores asignados tienen una longitud inferior o igual a 10 caracteres y se rellenarán con espacios a la derecha si es necesario. Se utiliza `proc print` para mostrar la tabla.
¡Copiado!
/* 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 */
Explicación : Este ejemplo utiliza el tipo `VARCHAR(50)` para la columna `description`. Se observa que los valores se almacenan con su longitud real sin relleno, incluso si son más cortos que la longitud máxima definida. Se utiliza `proc columnInfo` para inspeccionar los atributos de las columnas, incluyendo sus longitudes.
¡Copiado!
/* 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 */
Explicación : Este ejemplo ilustra el uso del tipo `DOUBLE` para almacenar números con gran precisión, incluyendo números muy pequeños y muy grandes, así como valores faltantes. `proc columnInfo` confirma el tipo de columna, y `table.fetch` se utiliza para recuperar y mostrar los datos, demostrando la gestión de los valores faltantes y la precisión de los números flotantes.
¡Copiado!
/* 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 */
Explicación : Este ejemplo avanzado muestra cómo los tipos `VARCHAR(*)` y `CHAR(n)` se comportan al copiar una tabla CAS a una biblioteca SAS estándar (no-CAS). Se observa que `VARCHAR(*)` puede convertirse en una columna `CHAR(32767)` en un contexto no-CAS, mientras que `CHAR(n)` conservará su longitud fija, truncando los datos si son demasiado largos. Se utiliza `PROC CONTENTS` para verificar las longitudes de las columnas después de la copia.
¡Copiado!
/* 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 */
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.