案例如下:我有两个数据集。从第一个开始,我需要在field
中找到包含field2
中第二个数据集field
-----
dsggagfa 837 dgfsdg
879 thh
gasgg 7999 ghth
中任何一个数字的每个观察结果。
第一组数据:
field2
------
837
879
第二组数据:
field
-----
879 thh
fegfrsg 879 thh
预期结果:
select *
from firstdata
where field like in (select field2 from seconddata);
or
select *
from firstdata
where field in %"select field2 from seconddata"%;
我正在寻找类似的东西:
this.async(function () { ....})
答案 0 :(得分:2)
这将有效,因为表2中的field2是数字。此外,使用prxmatch
和\b
(字边界),确保您不会错误地选择,例如,如果您的表2包含数字799(或999,79,则为“gasgg 7999 ghth”) 99)。
data t1;
input field $32.;
datalines;
dsggagfa 837 dgfsdg
879 thh
gasgg 7999 ghth
;
data t2;
input field2 8.;
datalines;
837
879
;
proc sql;
select t1.field
from t1, t2
where prxmatch(cats("/\b",strip(put(t2.field2, 8.)),"\b/"), t1.field);
quit;
field
-----
dsggagfa 837 dgfsdg
879 thh
答案 1 :(得分:1)
假设field2是一个字符串,这将起作用。
index
会在field2
中返回field
的位置。
在field2
中找到field
时,where条件为TRUE。
select a.*
from firstdata a, seconddata b
where index(a.field, b.field2)
;