マージするlike
のは良い考えではありません。インデックスを使用せず、他の方法で得られる多くの最適化を使用しません。ただし、必要な場合もあります。
ただし、SAS では、これを別の方法で行います [そして、他のほとんどの SQL では...]
proc sql;
select a.*,b.*
from tera.SFTP as a,home.SFTP_1 as b
where find(a.zip_c,b.zip_extract)
;
quit;
これは LIKE と同じことを達成しますが、SAS がインデックスと最適化を使用できる可能性が高く、より明確に記述されています。
考えられる列の長さの問題に対処するには、TRIM を使用します。
data have_a;
length zip_c $50;
input @1 zip_c $50.;
datalines;
12345 99999
67890 99999
88001 99999
37013 99999
60037 99999
;;;;
run;
data have_b;
length zip_extract $7;
input zip_extract $;
datalines;
12345
37013
99998
;;;;
run;
proc sql;
title "No Rows!";
select a.*,b.*
from have_a as a,have_b as b
where find(a.zip_c,b.zip_extract)
;
quit;
proc sql;
title "Rows!";
select a.*,b.*
from have_a as a,have_b as b
where find(a.zip_c,trim(b.zip_extract))
;
quit;