繁体   English   中英

根据存储在其他数据库中的已知变量拆分一行

[英]Splitting a row depending of known variable stored in an other database

我在 SAS 所以代码不是纯 MySQL。

我有一张这样的桌子

ID     Fruits
1      Apple-Water-melon
2      Pine-Apple-Kiwi

但也有另一种水果

ID     Fruits
x      Apple
x      Kiwi
x      Pine-apple
x      Water-melon

我怎么能有这样的决赛桌?

ID    Fruits
1     Apple
1     Water-melon
2     Pine-apple
2     Kiwi

如果它们与第二个表中找到的变量匹配,是否可以解析第一个表并拆分变量?

谢谢,

您可以使用 FINDW() function 检查 FRUIT 值是否出现在 FRUITS 列表中。

data have ;
  input ID Fruits $40.;
cards;
1      Apple-Water-melon
2      Pine-Apple-Kiwi
;

data list;
  fruitid +1 ;
  input fruit $40. ;
cards;
Apple
Kiwi
Pine-apple
Water-melon
;

proc sql ;
  create table want as
  select a.*,b.* 
  from have a 
    left join list b
    on 0 ne findw(Fruits,fruit,'-','ti')
  ;
quit;

结果

Obs    ID         Fruits          fruitid    fruit

 1      1    Apple-Water-melon       1       Apple
 2      2    Pine-Apple-Kiwi         1       Apple
 3      2    Pine-Apple-Kiwi         2       Kiwi
 4      2    Pine-Apple-Kiwi         3       Pine-apple
 5      1    Apple-Water-melon       4       Water-melon

您想如何消除 PINE-APPLE 中间嵌入的 APPLE 匹配? 您是否要优先考虑多个单词水果名称,然后从水果列表字符串中删除这些水果?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM