I want to fetch variable values ,if first letter of variable value is digit then that digit should be omitted and want to fetch values.
varible:
ram
lakshman
manhor1
1hello
2hai
fetched varible:
ram
lakshman
manohar1
hello
hai
proc sql;
create table want as
select case when input(substr(name,1,1),8.)>=0 then compress(name,,'ka') else name end as fetched_name
from have;
quit;
proc sql;
create table want as
select case when input(substr(name,1,1),8.)>=0 then compress(name,,'ka') else name end as fetched_name
from have;
quit;
If this is in EG Query builder you'll need an advanced expression.
Substr out the first character and use the anydigit function
If this was a data step:
data want;
set have;
first_char=substr(variable, 1,1);
if anydigit(first_char) then fetched_variable=substr(variable, 2);
else fetched_variable=variable;
run;
Please try PRX
proc sql;
create table want as select variable,
case when prxmatch('/\d{1}/',variable)^=1 then variable
else compress(variable,,'ka') end as variable2 from have;
quit;
Thanks,
Jag
data want;
set have;
fetched_variable=prxchange('s/^\d{1}(.)/$1/',-1,variable);
run;
proc sql;
select prxchange('s/^\d{1}(.)/$1/',-1,variable) as fetched_variable from have;
quit;
hi,
thanks.
instead of the input(substr(name,1,1),8.)>=0,we can use notdigit(substr(name,1,1)) --easy to understand .
Hi,
Yes, this is a better way to do that. I think notalpha(substr(name,1,1)) will be used instead of notdigit(substr(name,1,1)) to get the desired results.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.