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

How can I evaluate a variable to create another if the if function does not allow the like operator?

 

For example is easy if var is numeric, like:

IF VAR1 = 0 THEN VAR2 = 'A';

 

But if I need to evaluate something inside string of characters how can it be?

some like:

IF VAR1 LIKE "%A%" THEN VAR2 = "CONTAINS LETTER A"

 

What operator can I replace to LIKE?

1 ACCEPTED SOLUTION

Accepted Solutions
art297
Opal | Level 21

Either the INDEX or FINDC functions.

 

Art, CEO, AnalystFinder.com

 

View solution in original post

5 REPLIES 5
art297
Opal | Level 21

Either the INDEX or FINDC functions.

 

Art, CEO, AnalystFinder.com

 

Angel_Saenz
Quartz | Level 8

thank you Art, and do you know how can I do it like a evaluate a list?

 

I know this does not work but is only an example:

IF VAR1 IN ('%A%','%B%','%C%') THEN VAR2  = 'CONTAINS LETTERS A B or C'

 

If I use this works:

IF INDEX(VAR1,'A') THEN VAR2 = 'CONTAINS LETTERS A B or C'

IF INDEX(VAR1,'B') THEN VAR2 = 'CONTAINS LETTERS A B or C'

IF INDEX(VAR1,'C') THEN VAR2 = 'CONTAINS LETTERS A B or C'

But is it possible to simplify it?

 

I simplified like this:

IF INDEX(VAR1,'A') or INDEX(VAR1,'B') or INDEX(VAR1,'C') THEN VAR2 = 'CONTAINS LETTERS A B or C'

but is there another way tah you know more shorten? some like:

IF INDEX(VAR1,'A','B','C') THEN VAR2 = 'CONTAINS LETTERS A B or C'

 

Thanks

Jagadishkatam
Amethyst | Level 16

Please try

 

if prxmatch('m/[abc]/i',VAR1) then VAR2="CONTAINS LETTER A or B or C";
Thanks,
Jag
Jagadishkatam
Amethyst | Level 16

alternatively we could try the perl regular expression like below

 

if prxmatch('m/[a]/i',VAR1) then VAR2="CONTAINS LETTER A";
Thanks,
Jag
art297
Opal | Level 21

the findc function allows you to both find if a string contains one or more of the variables in a list, as well as ignore case (if desired). e.g.:

data want;
informat string $23.;
input string &;
if findc(string, 'abc', "i") then
want='Contains A, B or C';
datalines;
Microsoft Office Visio
Microsoft Office Word
Adobe Photoshop
Adobe PhotoshopPro
Internet Explorer
;

Art, CEO, AnalystFinder.com 

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 5 replies
  • 1687 views
  • 2 likes
  • 3 in conversation