[英]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.