簡體   English   中英

SQL比較來自具有不同數據格式的兩個表中的字符串

[英]SQL comparing strings from two tables with different data formats

我有兩個表,我想比較不同的列。 我們的系統中有一個序列號問題,我想確保表B中的所有序列號( CMMTTEXT以逗號分隔的形式)都被轉移到表ASERLTNUM每個單獨的序列號都有其序列號自己的線)

基本上,我想嘗試做的是從最近3個月中獲取SOPNUMBER (從表C中獲取),然后從表B表A中獲取最近3個月中的所有行SOPNUMBER和然后以某種方式確保表BCMMTTEXT中的所有序列號在表A中都SERLTNUM

我知道如何獲取所有數據,但是當它們具有不同的數據格式時 ,我不確定如何比較SQL中的兩列 我試圖考慮是否可以使用substr()搜索CMMTTXT但是不知道如何顯示未找到匹配項的行。

LNITMSEQ表是一個ID,該ID與訂單中的不同訂單項相對應。

表A

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

表B

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

表C

+-----------+-----------+
| SOPNUMBER | DATE      |
+-----------+-----------+
| I327478   | 5/20/2017 |
+-----------+-----------+
| I327479   | 5/21/2017 |
+-----------+-----------+

我已經在上面發表評論,但是可以在此處找到您需要的更清晰的答案:

SQL將值拆分為多行

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

SELECT * FROM TableA INNER JOIN TAableB
ON FIND_IN_SET(TableA.SERLTNUM, TableB.CMMTTEXT) > 0

如果字符串str在由N個子字符串組成的字符串列表strlist中,則FIND_IN_SET函數返回的值在1到N之間。 有關更多詳細信息,請參見手冊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM