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

Hi,  is there a quick way to substring from the right but skip a few digits.

If I have 2345001  I want to get 2345 .. I want to only remove the last 3 digits...  the length of the field is not uniform, soucl be 8 digits or 10 or 9, etc.  but th eonly thing sore sure is that I want to remove the last 3 digits..  Thanks

1 ACCEPTED SOLUTION

Accepted Solutions
PGStats
Opal | Level 21

myStr =  substr(myStr, 1, length(myStr) - 3);

PG

View solution in original post

8 REPLIES 8
PGStats
Opal | Level 21

myStr =  substr(myStr, 1, length(myStr) - 3);

PG
monei011
Calcite | Level 5

Another approach in these sorts of situations is to use the substring function with the reverse function

mystr =  reverse(substr(strip(reverse(mystr)),4));

Tom
Super User Tom
Super User

Is your variable a number or a character string?

137  data _null_;

138    x=2345001 ;

139    y=int(x/1000);

140    put x= y=;

141  run;

x=2345001 y=2345

Haikuo
Onyx | Level 15

The more, the merrier:

data _null_;

  mystr="2345001";

  new_str=prxchange('s/(^\w+)(\w{3}$)/$1/',-1,strip(mystr));

  put mystr= new_str=;

run;

Haikuo

PGStats
Opal | Level 21

The simpler, the better :smileysilly:

data _null_;

  mystr="  2345001     ";

  new_str = prxchange('s/\d{3}\s*$//', 1, mystr);

  put mystr= new_str=;

run;

PG

PG
Haikuo
Onyx | Level 15

Better indeed!

Haikuo

monei011
Calcite | Level 5

Might be better use of prxchange, but not exactly readable nor intuitively obvious what the code is doing.

I'd want a comment explaining what was being done and why so that my BAU support junior could understand what the code was doing.

PGStats
Opal | Level 21

It reads: Replace (s) a succession of exactly 3 ({3}) digits (\d) followed by any amount (*) of white space (\s) and occuring at the end of the string ($) with nothing(//). Do this only once.

PG

PG

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

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
  • 8 replies
  • 19465 views
  • 4 likes
  • 5 in conversation