BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Nehcour0420
Calcite | Level 5

Hi,

In IBM DB2, we can select certain digits from left or right, I am wondering if I can use proc sql to achieve same functionality as:

RIGHT(DIGITS(test.Id_Number), 3)

Thanks,

Eric

1 ACCEPTED SOLUTION

Accepted Solutions
Linlin
Lapis Lazuli | Level 10

Yes,it is a character variable. you can convert it to numeric:

data have;
input v $;
cards;
adf124a
3456pb
7g39b2
;

proc sql;
create table want as select input(substr(compress(v,,'kd'),length(compress(v,,'kd'))-2),3.) as new
   from have;
quit;
proc contents data=want;run;

View solution in original post

3 REPLIES 3
Linlin
Lapis Lazuli | Level 10

how about:

data have;
input v $;
cards;
adf124a
3456pb
7g39b2
;

proc sql;
select substr(compress(v,,'kd'),length(compress(v,,'kd'))-2)as new
   from have;
quit;

Linlin

Nehcour0420
Calcite | Level 5

Thanks Linlin,

If I understand right, the sub string is a char type and could not be used to compared with a numeric type, is that right?

Linlin
Lapis Lazuli | Level 10

Yes,it is a character variable. you can convert it to numeric:

data have;
input v $;
cards;
adf124a
3456pb
7g39b2
;

proc sql;
create table want as select input(substr(compress(v,,'kd'),length(compress(v,,'kd'))-2),3.) as new
   from have;
quit;
proc contents data=want;run;

How to connect to databases in SAS Viya

Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 3 replies
  • 3421 views
  • 0 likes
  • 2 in conversation