我正在尝试在SAS结构中为Financial System Data构建数据模型。我们的想法是将表中的ID作为字符表达式保存,然后从另一个表构建一个带有内部联接的proc sql - 类似的应该从一个char表达式“ID%”开始获取ID。 proc sql应如下所示:
proc sql;
SELECT I.*
FORM tableWithIDs X INNER JOIN tableWithData I
ON I.ID LIKE X.ID||'%'
;
quit;
Unofortunatley它应该是这样的:......喜欢'X.ID%' 有没有办法在SAS代码中构建这样的表达式? 请帮助!!!
答案 0 :(得分:4)
如果保存X.ID||'%'
的值,您可能会发现它看起来像1 %
(对于id = 1)。尝试将compress
放在X.ID||'%'
左右,以删除多余的空白,如下所示:
LIKE compress(X.ID || '%')
我假设您的ID中没有任何空白字符。
答案 1 :(得分:3)
假设您使用的是版本9的SAS解决方案,则使用CATS函数而不是||级联:
like cats(x.ID,'%')
您还拥有EQT运算符,这意味着基本上是'以'开头'(截断为相等的长度,然后进行比较):
on I.ID eqt x.ID
仅当x.ID始终与I.ID长度相同或长于I.ID时才有效,因为它将截断较长者。如果I.ID是较长的字符串,例如'Member',x.ID是'Mem',则比较将是有效的,LIKE认为它不会有效。