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


This code works in SQL developer, but getting error in SAS
proc sql;
select
case WHEN Name LIKE '%' || substr(name2,instr(name2,' ',-1)+1)|| '%' then 'Y' else 'N' end as survey1
from x;
run;

ERROR: Function INSTR could not be located.
ERROR: Expression using addition (+) requires numeric types.

1 ACCEPTED SOLUTION

Accepted Solutions
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Yes, SAS implements ANSI SQL, not Oracle additional components.

Your case can be re-defined but would need to see some of the data it is working on to get an idea of what you want.  I would guess at:

case when index(name,name2) > 0 then "Y" else "N" end as survey1

 

 

Note the above uses a SAS function index() so wouldn't work if you pass it through to the database, however if you did that the original query would work anyways.

View solution in original post

1 REPLY 1
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Yes, SAS implements ANSI SQL, not Oracle additional components.

Your case can be re-defined but would need to see some of the data it is working on to get an idea of what you want.  I would guess at:

case when index(name,name2) > 0 then "Y" else "N" end as survey1

 

 

Note the above uses a SAS function index() so wouldn't work if you pass it through to the database, however if you did that the original query would work anyways.

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 1 reply
  • 8808 views
  • 3 likes
  • 2 in conversation