BookmarkSubscribeRSS Feed
gurpreetkaur
Fluorite | Level 6

Hi Experts,

 

I am concatenating 2 strings using  || operator. Below is the question:

 

data sample;

length string1 $20.;

string1 = "Gurpreet";

string2 = "Kaur";

string1 = string1 || string2;

run;

 

My question is: The value of string1 in the dataset should be "GurpreetKaur". But the value is being shown as "Gurpreet" only. Please explain.

 

Thanks,

Gurpreet

2 REPLIES 2
Jagadishkatam
Amethyst | Level 16

Please try with cats function, may the additional spaces are inhibiting from displaying the full name

 

data sample;
length string1 $20.;
string1 = "Gurpreet";
string2 = "Kaur";
string1 = cats(string1,string2);
run;

proc print;
run;
Thanks,
Jag
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Yes, do remember that a string is an array of characters.  Where you define string1 to be $20 this means 20 boxes each with its own character.  So when you concatenate "Gurpreet            " with "Kaur", and put those 24 characters back into a variable which can only hold 20 characters the last four are dropped.

There are pletny of options to resolve this, for instance strip() each value:

string1=strip(string1)||strip(string2);

Or as @Jagadishkatam has given you, the cats() function would work well, note however you might want a space between so catx would be a better choice:

string1=catx(' ',string1,string2);

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 27551 views
  • 8 likes
  • 3 in conversation