我不确定为什么我的桌子没有加入。我创建了一个示例,表格应该加入,但我不确定是什么导致了这个问题。
data Master1;
length region $30;
input region;
datalines;
SANFRANCISCO-OAKLAND-SANJOSE
run;
data map;
length market $30 code $1;
input market code;
datalines;
SANFRANCISCO-OAK-SANJOSE A
SEATTLE B
run;
data master1;
set master1;
region=scan(region,1,'-');
run;
proc sql noprint;
create table a as
select a.*, b.Code,b.market
from Master1 a
left join map b
on a.region like '%' || trim(b.market) || '%';
quit;
答案 0 :(得分:2)
让我们在where
子句中替换数据中的值:
a.region --> 'SANFRANCISCO-OAKLAND-SANJOSE'
b.market --> 'SANFRANCISCO-OAK-SANJOSE'
彼此不是喜欢。一个有“OAKLAND”,另一个有“OAK”。您需要修复数据。
编辑:
剥离结果后,你有:
a.region --> 'SANFRANCISCO'
b.market --> 'SANFRANCISCO-OAK-SANJOSE'
a.region like '%' || trim(b.market) || '%' --> 'SANFRANCISCO' LIKE '%SANFRANCISCO-OAK-SANJOSE%'
这仍然是假的。你有错误的顺序比较。试试这个:
b.market like '%' || trim(a.region) || '%'
答案 1 :(得分:0)
我相信你不能创建LIKE '%...%'
语句(带元字符%
)作为字符表达式。
如果region
始终是market
的子字符串,则可以使用条件
on index(b.market,trim(a.region))>0;
而不是LIKE
。