Hello,
I'm needing to extract the middle numbers from an alphanumeric string that can have varying lengths.
This an example of the alphanumeric strings:
Have:
1) SC_NATLTAP_P_617686046__0520
2) NC_OPTUM PARTD_R_220335038421000999P__0910
Want:
1) 617686046
2) 220335038421000999P
I've used Compress, but still leaves the last 4 digits, which I don't need.
ID = Compress(clm_nb,"_","A");
Thank you in advance.
This assumes the substring you want always begins with the first digit in the string.
data have;
infile cards;
input x $ string &:$50.;
cards;
1) SC_NATLTAP_P_617686046__0520
2) NC_OPTUM PARTD_R_220335038421000999P__0910
;
run;
data want;
set have;
start = anydigit(string); * find location of first digit;
num = scan(substr(string, start), 1, '_'); * extract substring that end with '_';
drop x start;
run;
This assumes the substring you want always begins with the first digit in the string.
data have;
infile cards;
input x $ string &:$50.;
cards;
1) SC_NATLTAP_P_617686046__0520
2) NC_OPTUM PARTD_R_220335038421000999P__0910
;
run;
data want;
set have;
start = anydigit(string); * find location of first digit;
num = scan(substr(string, start), 1, '_'); * extract substring that end with '_';
drop x start;
run;
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.
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.
Ready to level-up your skills? Choose your own adventure.