[英]SQL comparing strings from two tables with different data formats
我有兩個表,我想比較不同的列。 我們的系統中有一個序列號問題,我想確保表B中的所有序列號( CMMTTEXT
以逗號分隔的形式)都被轉移到表A ( SERLTNUM
每個單獨的序列號都有其序列號自己的線)
基本上,我想嘗試做的是從最近3個月中獲取SOPNUMBER
(從表C中獲取),然后從表B和表A中獲取最近3個月中的所有行SOPNUMBER
和然后以某種方式確保表B中CMMTTEXT
中的所有序列號在表A中都為SERLTNUM
。
我知道如何獲取所有數據,但是當它們具有不同的數據格式時 ,我不確定如何比較SQL中的兩列 。 我試圖考慮是否可以使用substr()
搜索CMMTTXT
但是不知道如何顯示未找到匹配項的行。
LNITMSEQ
表是一個ID,該ID與訂單中的不同訂單項相對應。
+-----------+----------+----------+---------------+
| SOPNUMBER | LNITMSEQ | SERLTNUM | ITEMNMBR |
+-----------+----------+----------+---------------+
| I327478 | 16384 | ABC123 | someItem |
+-----------+----------+----------+---------------+
| I327478 | 32768 | DEF123 | someOtherItem |
+-----------+----------+----------+---------------+
+-----------+----------+-----------------------------+
| SOPNUMBER | LNITMSEQ | CMMTTEXT |
+-----------+----------+-----------------------------+
| I327478 | 16384 | ABC123,ABC124,ABC125,ABC126 |
+-----------+----------+-----------------------------+
| I327478 | 32768 | DEF123,DEF124,DEF125,DEF126 |
+-----------+----------+-----------------------------+
+-----------+-----------+
| SOPNUMBER | DATE |
+-----------+-----------+
| I327478 | 5/20/2017 |
+-----------+-----------+
| I327479 | 5/21/2017 |
+-----------+-----------+
我已經在上面發表評論,但是可以在此處找到您需要的更清晰的答案:
您可以使用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.