我尝试在SAS中的case语句中使用正则表达式,如下所示:
proc sql;
create table lib_name.CIS_Ser_flat_Info as
select NO, company,
case when prxmatch(prxparse("^(map)|^(mb\s?person)"), upper(company))>0 then 1 else 0 end as map_flag,
from map_info;
quit;
但仍然显示问题如下:
语法错误,期待以下之一:!,!!,&,(,*,**,+, ',', - ,/,<,< =, <>,=,>,> =,?,AND,BETWEEN,CONTAINS,EQ,EQT,FROM,GE,GET,GT,GTT,LE,LET, LIKE,LT,LTT,NE,NET,OR,^ =,|,||,〜=。
表格如下:
No company
1 saura
2 maybe
答案 0 :(得分:1)
您的代码中存在一些问题。
首先,upper()
不是SAS功能。如果您尝试将company
的值转换为大写,则函数为upcase()
。
其次,正则表达式模式必须以斜杠/
开头和结尾。
最后,您无需在prxparse()
中使用prxmatch
。
以下应该做你想做的事:
proc sql;
create table lib_name.CIS_Ser_flat_Info as
select NO, company,
case when prxmatch("/^(map)|^(mb\s?person)/", upcase(company)) then 1 else 0 end as map_flag,
from map_info;
quit;