首页 > 解决方案 > 在字段中遇到特殊字符(例如“/”)时创建新行

问题描述

每当我在特定字段中遇到斜线时,我都会尝试复制记录。

问题的背景:我正在尝试比较两个包含项目编号、项目描述和项目序列号的数据列表。一个列表有项目数量和状态信息,另一个列表有项目位置信息,所以我试图将位置列表与主列表匹配。问题是这两个列表都是彼此独立创建的,所以它们都有错误,我只能在 SQL 中进行大约 20% 的内部连接。其余的不匹配,因为一个列表中的项目编号错误,一个列表中的序列号可能缺少一位数字,我也无法很好地比较命名法,因为有人可能会说“手动扳手”,另一个可能会说“扳手,5 毫米,套筒”。

此外,一个数据列表有多个项目,与某个主要项目相关,保存在每个记录中。他们通过在序列号字段中存储由斜线分隔的多个序列号来做到这一点。

尝试在 Alteryx 中使用 Levenshtein 差异(模糊匹配)进行序列号/项目编号匹配。这造成了太多误报,因为序列号是连续的,项目编号经常不正确,项目描述可能看起来与人类相似,但字符长度可能大不相同(例如,如果其他列表有类似“卡车,8 轮,货物,平板”)。

如果一个列表中的序列号包含在另一个列表中(序列号字段中有多个序列号),我目前正在尝试仅匹配列表。

我目前正在使用的示例 SQLite 代码

select * from [MISSING ITEMS LIST] as a
left join [RFID TAG SCAN] as b on 
b.[SERIAL NUMBER] like '%' || (a.[SERIAL NUMBER] || '%')
where b.[SERIAL NUMBER] <> '' and b.[SERIAL NUMBER] is not null

我想要达到的目标:

从上面重新复制这部分:所以表 A 可能有这个:

Record# Item#   Description   SN 
1,      156928,  Truck,       1234
2,      209344,  Truck Cover, 5588

表 B 可能有这个

Record# Item#   Description SN 
1,      156928, Truck,      5588/01234

为了使分析更容易一些,我想将表 B 转换为:

Record# Item#   Description SN 
1,      156928, Truck,      5588
1,      156928, Truck,      01234

标签: sqlsqlitemariadb

解决方案


为了将表 B 转换为您想要的格式,请使用 Text to Columns 工具

在此处输入图像描述

在 Configuration 中,将 Delimiter 设置为“/”并选择“Split to Rows”

在此处输入图像描述


推荐阅读