Hi all,
I am looking to add a leading '0' to variables within a field that are less that 5 characters in length. Does anyone know of a bit of code that can achieve this? Below is my attempt. I know everything after 'THEN' works fine, its the selecting variables with less than 5 characters that is hindering me.
CASE
WHEN substr(t1.ded_code,max(1,length(t1.ded_code)-3)) THEN PUT(INPUT(t1.ded_code, best.), z2.)
ELSE t1.ded_code
END
AS ded_code_v2
Regards
Finbar
You can simplify it by using SAS functions:
case when lengthn(T1.DED_CODE) < 5 then cats(repeat("0",5-lengthn(T1.DED_CODE)),T1.DED_CODE)
else T1.DED_CODE end as DED_CODE_V2
So if the trimmed lenght is less than five concatenate 0 for each space less than five. Note, if DED_CODE is numeric, you could simplify this further by:
put(input(T1.DED_CODE,best.),z5.) as DED_CODE_V2
The Z format padds out numbers with preceeding zeroes.
You can simplify it by using SAS functions:
case when lengthn(T1.DED_CODE) < 5 then cats(repeat("0",5-lengthn(T1.DED_CODE)),T1.DED_CODE)
else T1.DED_CODE end as DED_CODE_V2
So if the trimmed lenght is less than five concatenate 0 for each space less than five. Note, if DED_CODE is numeric, you could simplify this further by:
put(input(T1.DED_CODE,best.),z5.) as DED_CODE_V2
The Z format padds out numbers with preceeding zeroes.
Hi,
Thanks! That works fine, I just changed
cats(repeat("0",5-lengthn(T1.DED_CODE))to
cats(repeat("0",4-lengthn(T1.DED_CODE))the first one was throwing in two leading '0's
Regards
Finbar
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.