BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
paulkaefer
Lapis Lazuli | Level 10

I have a query like so:

 

proc sql;
    create table test_query as
    select *
    from lib.dataset
    where something = 1
        and (description contains ("ABC")
          or description contains ("DEF")
          or description contains ("GHI")
          or description contains ("JKL")
          or description contains ("MNO")
          or description contains ("PQR"))
    ;
quit;

Is there a way to do something like "description LIKE IN ('%ABC%', '%DEF%', '%GHI%', ...)' that would avoid costly ORs within the query? Or something more efficient that I'm not thinking of?

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

How about PRXMATCH() ?

proc print data=sashelp.class;
where prxmatch('/B|M/i',name);
run;
Obs    Name       Sex    Age    Height    Weight

  3    Barbara     F      13     65.3        98
  6    James       M      12     57.3        83
 14    Mary        F      15     66.5       112
 16    Robert      M      12     64.8       128
 18    Thomas      M      11     57.5        85
 19    William     M      15     66.5       112

View solution in original post

2 REPLIES 2
Tom
Super User Tom
Super User

How about PRXMATCH() ?

proc print data=sashelp.class;
where prxmatch('/B|M/i',name);
run;
Obs    Name       Sex    Age    Height    Weight

  3    Barbara     F      13     65.3        98
  6    James       M      12     57.3        83
 14    Mary        F      15     66.5       112
 16    Robert      M      12     64.8       128
 18    Thomas      M      11     57.5        85
 19    William     M      15     66.5       112
paulkaefer
Lapis Lazuli | Level 10

Thanks, @Tom! I can't believe I didn't think of regexes.

 

Interestingly, the performance didn't seem much better, a sign that maybe the original filters aren't so bad.

But this definitely cleans-up the code quite a bit & gives more flexibility for automated query construction.

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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
  • 2 replies
  • 1757 views
  • 3 likes
  • 2 in conversation