在case语句中使用正则表达式

时间:2017-10-05 05:44:39

标签: regex sas

我尝试在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

1 个答案:

答案 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;
相关问题