mysql - 根据存储在其他数据库中的已知变量拆分一行
问题描述
我在 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() 函数检查 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 匹配?您是否要优先考虑多个单词水果名称,然后从水果列表字符串中删除这些水果?
推荐阅读
- python - Python,如何找到3维数组的维数?
- unix - 如何验证使用 FTP 提交到 z/OS 的作业是否已完成?
- python - 字符串切片不接受变量
- javascript - 将数据从服务传递到控制器 AngularJS 1.3.15
- javascript - 是否有适用于微软 BotFramework 的 Web 客户端 SDK
- jvm - 组装 jasmin 类导致倒置运算符和比较
- python - 我想从 main_program.py 修改我自己的 my_dicts.py 模块
- swift - MobileFFMPeg 未将 mkv 转换为 Mp4
- django - 如何上传“django-rest-api server”和“crawling.py”
- sql - 在访问中返回包含重复项的行中的最大值