Veröffentlicht am :
DATA Step CREATION_INTERNE

Erstellen einer VARCHAR-Variable mit der LENGTH-Anweisung

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die Funktionsanalyse beschreibt die Erstellung und Verwaltung von VARCHAR-Variablen in der SAS© Viya-Umgebung. Im Gegensatz zum CHAR-Typ, der eine feste Länge in Bytes verwendet, passt sich der VARCHAR-Typ der tatsächlichen Länge der Zeichenkette an und vermeidet so Abschneidungen, insbesondere bei Multibyte-Zeichen. Die Verwendung der CAS-Engine ist für die Erstellung von VARCHAR-Variablen unerlässlich, da die SAS© 9-Engine diese nicht unterstützt. Es wird empfohlen, VARCHAR für Zeichenketten variabler Länge zu bevorzugen und die Auswirkungen auf die Speichernutzung für sehr kurze Zeichenketten zu berücksichtigen.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP, um temporäre oder In-Memory-Tabellen zu erstellen.

1 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel veranschaulicht die Erstellung einer VARCHAR-Variable (X) und einer CHAR-Variable (Y) mit einer maximalen Länge von 30 Zeichen/Bytes. Die Variable X speichert die Zeichenkette, ohne Speicherplatz für ungenutzte Zeichen zu verschwenden, während Y immer 30 Bytes zuweist.
Kopiert!
1DATA mycas.ex_base_string;
2 LENGTH x varchar(30);
3 LENGTH y $30;
4 x = 'Bonjour le monde';
5 y = 'Bonjour le monde';
6RUN;
7 
8PROC CONTENTS DATA=mycas.ex_base_string;
9RUN;
2 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel zeigt den Unterschied in der Handhabung von Multibyte-Zeichen (wie 'ã' in UTF-8) zwischen VARCHAR und CHAR. Die Variable 'ville_char' mit einer Länge von 10 Bytes könnte abgeschnitten werden, wenn die Multibyte-Zeichen die Byte-Grenze überschreiten, während 'ville_varchar' mit einer Länge von 10 Zeichen sich korrekt anpasst und die vollständige Zeichenkette speichert, wenn ihre Zeichenlänge eingehalten wird, unabhängig von der Byte-Größe.
Kopiert!
1options encoding='utf-8';
2 
3DATA mycas.ex_troncature;
4 LENGTH ville_varchar varchar(10);
5 LENGTH ville_char $10;
6
7 ville_varchar = 'São Paulo'; /* 9 caractères, mais 'ã' est multi-octets en UTF-8 */
8 ville_char = 'São Paulo';
9
10 OUTPUT;
11RUN;
12 
13PROC PRINT DATA=mycas.ex_troncature;
14 title 'Comparaison VARCHAR et CHAR avec caractères multi-octets';
15RUN;
16 
17PROC CONTENTS DATA=mycas.ex_troncature;
18RUN;
3 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel zeigt, wie VARCHAR-Variablen manipuliert werden. Es verwendet die Funktion `SUBSTR`, um einen Substring aus einer VARCHAR-Variable zu extrahieren, und die Funktion `CATX`, um mehrere Elemente (einschließlich einer anderen VARCHAR-Variable) zu einer neuen VARCHAR-Variable zu verketten. Dies veranschaulicht die Flexibilität des VARCHAR-Typs bei der Manipulation von Zeichenketten.
Kopiert!
1DATA mycas.ex_manip_varchar;
2 LENGTH nom_produit varchar(50);
3 LENGTH description_courte varchar(20);
4
5 nom_produit = 'Ordinateur Portable Ultra-Fin XPS 15';
6 description_courte = substr(nom_produit, 1, 20);
7
8 nouvelle_chaine = catx(' - ', 'Nouveau', description_courte, 'Édition');
9 OUTPUT;
10RUN;
11 
12PROC PRINT DATA=mycas.ex_manip_varchar;
13 title 'Manipulation de variables VARCHAR';
14RUN;
15 
16PROC CONTENTS DATA=mycas.ex_manip_varchar;
17RUN;
4 Codeblock
DATA STEP / PROC CASUTIL Data
Erklärung :
Dieses fortgeschrittene Beispiel veranschaulicht die Erstellung einer Tabelle direkt in der CAS-Umgebung ('mycas' ist ein CAS-Libname) mit VARCHAR-Variablen. Es zeigt, wie die Längen von VARCHARs auch bei potenziell sehr langen Zeichenketten eingehalten werden, ohne sichtbares Abschneiden in der Anzeige zu verursachen, solange die deklarierte Zeichengrenze ausreicht. Die Verwendung von `proc contents` bestätigt die effektiven Typen und Längen in CAS. Es unterstreicht die natürliche Integration von VARCHARs in verteilte In-Memory-Operationen in Viya.
Kopiert!
1/* Assurez-vous d'avoir une session CAS active */
2cas mycas;
3 
4/* Crée une table CAS avec une variable VARCHAR */
5DATA mycas.clients;
6 LENGTH client_id varchar(15) client_nom varchar(100);
7 client_id = 'C001';
8 client_nom = 'Dupont Martin';
9 OUTPUT;
10 
11 client_id = 'C002';
12 client_nom = 'Marie Dubois avec un nom très très long qui dépasse 100 caractères si on ne fait pas attention';
13 OUTPUT;
14RUN;
15 
16/* Affiche le contenu de la table CAS */
17PROC PRINT DATA=mycas.clients;
18 title 'Clients avec VARCHAR en CAS';
19RUN;
20 
21/* Vérifie la structure de la table CAS avec PROC CONTENTS */
22PROC CONTENTS DATA=mycas.clients;
23 title 'Contenu de la table CAS avec VARCHAR';
24RUN;
25 
26/* Utilise PROC CASUTIL pour télécharger la table CAS vers une libname SAS */
27/* Cela n'est pas nécessaire pour l'utilisation directe en CAS, mais montre l'interopérabilité */
28/* proc casutil;
29 load casdata='clients' incaslib='mycas' outcaslib='casuser' replace;
30 run; */
31 
32/* Fin de la session CAS (facultatif, selon la gestion de la session) */
33/* cas mycas terminate; */
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.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved.