Hi,
I intend to select those cases which satisfy:
IF regno LIKE ('M%15', 'M%25', 'M%30', 'DISC') THEN OUTPUT;
However, this code is wrong.
How can I accomplish this? Thanks a lot.
The like operator is not available to the if statement only where clauses also I am quite sure it cannot be combined with the in operator to have a list of values.
You can only use LIKE in a WHERE clause not an if.
The like operator is not available to the if statement only where clauses also I am quite sure it cannot be combined with the in operator to have a list of values.
An alternative way is to use perl regular expression.
IF prxmatch('/M.*15|M.*25|M.*30|DISC/',regno) THEN OUTPUT;
Ksharp
For what it's worth, I found that using CASE within a PROC SQL SELECT statement worked for me. Sharing the example code in case it is useful.
PROC SQL;
CREATE TABLE SET_A AS
SELECT *, (CASE
WHEN FIELD LIKE 'APPL%' THEN 'A'
WHEN FIELD LIKE 'SYS%' THEN 'B'
ELSE ''
END
)
AS NEW_FIELDNAME
FROM SOURCE_TABLE
WHERE OTHER_CRITERIA = 'XXX';
RUN;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.