繁体   English   中英

SAS proc sql 连接和连接

[英]SAS proc sql concatenation and join like

我正在尝试在 SAS 结构中为金融系统数据构建数据模型。 这样做是为了保持标识在表中作为人物表情,然后建立一个proc sqlINNER JOIN将它们从另一个表-在LIKE应该得到IDs与一开始'ID%'的表达。 proc sql应如下所示:

proc sql;
SELECT I.* 
  FORM tableWithIDs X INNER JOIN tableWithData I 
    ON I.ID LIKE X.ID||'%'
;
quit;

不幸的是,它应该是这样的: ... LIKE 'X.ID%'有没有办法在 SAS 代码中构建这样的表达式?

如果您保存X.ID||'%'的值,您可能会发现它看起来像1 % (对于 id=1)。 尝试在X.ID||'%'周围compress以删除多余的空格,如下所示:

LIKE compress(X.ID || '%')

我假设您的 ID 中没有任何空白字符。

假设您使用的是版本 9,SAS 解决方案是使用 CATS 函数而不是 || 级联:

like cats(x.ID,'%')

您还有 EQT 运算符,这意味着本质上是“以”开头(截断为相等的长度,然后进行比较):

on I.ID eqt x.ID

这仅在 x.ID 始终与 I.ID 长度相同或更长时才有效,因为它将截断更长的那个。 如果 I.ID 是更长的字符串,例如“Member”,而 x.ID 是“Mem”,则比较将有效,而 LIKE 将认为它无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM