有没有办法从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;
我刚拿到一张空桌子。
答案 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;