SQL比较两个表中具有不同数据格式的字符串

时间:2017-05-30 14:17:29

标签: mysql sql

我有两个表,我想比较不同的列。我们的系统中存在序列号问题,我想确保将表B 中的所有序列号(CMMTTEXT - 以逗号分隔的形式)转移到< strong>表A (SERLTNUM - 其中每个序列号都有自己的行)

基本上,我想尝试做的是从过去3个月开始SOPNUMBER(我会从表C 获得),然后获取表B 表A 中的所有行,最后3个月SOPNUMBER&#39;然后以某种方式确保{{1}中的所有序列号表B 中的表A CMMTTEXT

我知道如何获取所有数据,但我不确定我可以做什么来比较SQL中具有不同数据格式的两列。我想如果有的话,我可以使用SERLTNUM来搜索substr(),但我不知道如何在没有找到匹配项的地方显示行。

CMMTTXT表是与订单中不同订单项对应的ID。

表A

LNITMSEQ

表B

+-----------+----------+----------+---------------+
| SOPNUMBER | LNITMSEQ | SERLTNUM | ITEMNMBR      |
+-----------+----------+----------+---------------+
| I327478   | 16384    | ABC123   | someItem      |
+-----------+----------+----------+---------------+
| I327478   | 32768    | DEF123   | someOtherItem |
+-----------+----------+----------+---------------+

表C

+-----------+----------+-----------------------------+
| SOPNUMBER | LNITMSEQ | CMMTTEXT                    |
+-----------+----------+-----------------------------+
| I327478   | 16384    | ABC123,ABC124,ABC125,ABC126 |
+-----------+----------+-----------------------------+
| I327478   | 32768    | DEF123,DEF124,DEF125,DEF126 |
+-----------+----------+-----------------------------+

2 个答案:

答案 0 :(得分:0)

我上面已经评论过,但可以在这里找到更清晰的答案:

SQL split values to multiple rows

答案 1 :(得分:0)

您可以使用FIND_IN_SET函数,如下所示

object.class.getField("foo");

如果字符串str在由N个子字符串组成的字符串列表strlist中,则FIND_IN_SET函数返回1到N范围内的值。有关详细信息,请参阅manual