CHAR(n): Für Zeichenketten fester Länge, wobei `n` die maximale Anzahl der Zeichen ist. Kürzere Werte werden mit Leerzeichen aufgefüllt. Dieser Typ unterstützt keine ANSI SQL NULL-Werte.
VARCHAR(n): Für Zeichenketten variabler Länge. Werte werden nicht mit Leerzeichen aufgefüllt. Ideal für Daten, deren Länge variiert. `VARCHAR(*)` kann verwendet werden, wenn die maximale Länge nicht bekannt ist, dies kann jedoch zu einer Konvertierung in `CHAR(32767)` führen, wenn in Bibliotheken kopiert wird, die `VARCHAR` nicht unterstützen.
DOUBLE: Stellt eine Gleitkommazahl doppelter Präzision (64 Bit) dar, die eine große Größenordnung und hohe Präzision ermöglicht und fehlende Werte unterstützt.
Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP, wodurch deren Autonomie und direkte Ausführung gewährleistet ist.
1 Codeblock
DATA STEP Data
Erklärung : Dieses einfache Beispiel erstellt eine CAS-Tabelle namens `fixed_char` mit einer Spalte `name` vom Typ `CHAR(10)`. Die zugewiesenen Werte sind 10 Zeichen oder kürzer und werden bei Bedarf mit Leerzeichen nach rechts aufgefüllt. `proc print` wird verwendet, um die Tabelle anzuzeigen.
Kopiert!
/* 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 */
Erklärung : Dieses Beispiel verwendet den Typ `VARCHAR(50)` für die Spalte `description`. Es ist zu beobachten, dass die Werte mit ihrer tatsächlichen Länge ohne Auffüllung gespeichert werden, auch wenn sie kürzer als die definierte Maximallänge sind. `proc columnInfo` wird verwendet, um die Spaltenattribute, einschließlich ihrer Längen, zu überprüfen.
Kopiert!
/* 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 */
Erklärung : Dieses Beispiel veranschaulicht die Verwendung des Typs `DOUBLE` zum Speichern von Zahlen mit hoher Präzision, einschließlich sehr kleiner und sehr großer Zahlen sowie fehlender Werte. `proc columnInfo` bestätigt den Spaltentyp, und `table.fetch` wird verwendet, um die Daten abzurufen und anzuzeigen, was die Handhabung fehlender Werte und die Präzision von Gleitkommazahlen demonstriert.
Kopiert!
/* 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 */
Erklärung : Dieses fortgeschrittene Beispiel zeigt, wie sich die Typen `VARCHAR(*)` und `CHAR(n)` verhalten, wenn eine CAS-Tabelle in eine Standard-SAS-Bibliothek (Nicht-CAS) kopiert wird. Es ist zu beachten, dass `VARCHAR(*)` in einem Nicht-CAS-Kontext in eine Spalte vom Typ `CHAR(32767)` konvertiert werden kann, während `CHAR(n)` seine feste Länge beibehält und Daten abschneidet, wenn sie zu lang sind. `PROC CONTENTS` wird verwendet, um die Spaltenlängen nach dem Kopieren zu überprüfen.
Kopiert!
/* 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 */
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.