PROC SQL like运算符

lor*_*d12 2 sql sas

我只是想知道是否有办法用变量的%符号来实现.我基本上希望区域包含市场和任何其他字符以便匹配.一个例子是如果REGION = ALBANY-SXSX-TVTV和市场= ALBANY,我希望区域和市场之间存在匹配.

select a.*, b.Code,b.HHLDS
from Master1 as a left join map as b
on a.region like "b.market%"; /*not sure about this*/ 
Run Code Online (Sandbox Code Playgroud)

Bel*_*Bob 6

根据agstudy的评论,这里有一个非常类似于ps2goat给出的解决方案,有一些简单的示例数据:

data Master1;
   length region $30;
   input region;
   datalines;
ALBANY-SXSX-TVTV
ALBANY2-SXSX-TVTV
SEATTLE-SXSX-TVTV
NEWYORK-SXSX-TVTV
run;

data map;
   length market $10 code $1;
   input market code;
   datalines;
ALBANY A
SEATTLE B
run;

proc sql noprint;
   create table a as
   select a.*, b.Code
   from Master1 a 
   left join map b
   on a.region like '%' || trim(b.market) || '%';
quit;
Run Code Online (Sandbox Code Playgroud)

请注意,这使用了连接运算符(||)而不是CAT函数.但是,CAT不起作用; 要使用ps2goat的解决方案,必须使用CATS功能删除无关的空白.因此它也可以写成

   on a.region like CATS('%',b.market),'%');
Run Code Online (Sandbox Code Playgroud)

还要注意使用单引号; 在使字符不变时,永远不要使用双引号.宏处理器扫描双引号内的文本以进行符号替换(百分比符号是触发器).