[英]SAS proc sql concatenation and join like
我正在尝试在 SAS 结构中为金融系统数据构建数据模型。 这样做是为了保持标识在表中作为人物表情,然后建立一个proc sql
与INNER 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.