获取包含来自另一个表SAS的值的行

时间:2014-05-08 14:43:18

标签: sql sas

有没有办法从tbl1获取所有行,其中一列包含tbl2列中的一个值?

让我们说tbl1.col1是字符串。现在我想要tbl1的行,其中col1包含(如在x中包含y在SQL语法中的y)tbl2.col2的一个条目。

所以我知道你可以通过一个表中的所有行获得,这些行出现在另一个表中 像这样的东西:

proc sql; 
select tbl1.* 
from tbl1, tbl2
where tbl1.id = tbl2.id
;quit;

然而,当我尝试时:

proc sql; 
select tbl1.* 
from tbl1, tbl2
where tbl1.id contains tbl2.id
;quit;

我刚拿到一张空桌子。

1 个答案:

答案 0 :(得分:3)

如果我理解你正在做什么,那就是在t1中找到t2中的行,其中t2中至少有一行,使得t2.id将t1.id作为子字符串,你的问题可能就是t1。 id需要压缩/修剪。否则,t1.id在其实际有用的值填充到完整的字符串长度之后将有空格 - 在这个例子中,这是8长(对于读取t1的方式读取的字符串的默认值)。

data t1;
input id $;
datalines;
123
456
789
;;;;
run;

data t2;
input @1 id $8.;
datalines;
123 456
234 567
;;;
run;

proc sql;
select t1.*
from t1,t2
where t2.id contains compress(t1.id);
quit;