2017-02-14 37 views
0

私は顧客の銀行取引データを扱っており、顧客名の一部または全部を含む取引を除外したいと考えています。 私のデータは次のようになります。部分一致文字列mysql

Table A: 
Cust_ID  |TxnDescription      | 
----------- |-------------------------------------| 
C123------- |#######LIANDRI CORPORATION###########| 
C123------- |#########LIANDRI#####################| 
C123------- |############JEFF L###################| 
C123------- |#########K.S. LI ANDRI###############| 
C123------- |############XAN KRIEGOR##############| 
C123------- |####AXON RESEARCH CORPORATION########| 
C123------- |############FENTECH INCORPORATED#####| 
C123------- |########PHAYDER CORPORATION##########| 
C123------- |############IZANAGI CORPORATION######| 

Table B: 
Cust_ID  |PromoterName       | 
--------------|-------------------------------------| 
C123   |LIANDRI CORPORATION     | 
C123   |JEFF LIANDRI       | 
C123   |K S LIANDRI       | 
C123   |XAN KRIEGOR       | 
C324   |IZANAGI CORPORATION     | 

私の所望の出力は次のとおりです。ここ

TABLE: E 
Cust_ID  |TxnDescription      |Fl_Exclude | 
----------- |-------------------------------------|------------| 
C123------- |#######LIANDRI CORPORATION###########|YES   | 
C123------- |#########LIANDRI#####################|YES   | 
C123------- |############JEFF LI ANDRI############|YES   | 
C123------- |#########K.S. LI ANDRI###############|YES   | 
C123------- |############XAN KRIEGOR##############|YES   | 
C123------- |####AXON RESEARCH CORPORATION########|NO   | 
C123------- |############FENTECH INCORPORATED#####|NO   | 
C123------- |########PHAYDER CORPORATION##########|NO   | 
C123------- |############IZANAGI CORPORATION######|NO   | 

私のアプローチは、以下のように単語に、テーブルBにプロモーターの名前を破るためにある:

TABLE: C 
Cust_ID  |PromoterNamePart      | 
--------------|-------------------------------------| 
C123   |LIANDRI        | 
C123   |CORPORATION       | 
C123   |JEFF         | 
C123   |LIANDRI        | 
C123   |K S         | 
C123   |LIANDRI        | 
C123   |XAN         | 
C123   |KRIEGOR        | 

そして、あいまいさに気をつけるために重複を取り除く

TABLE: D 
Cust_ID  |PromoterNamePart      | 
--------------|-------------------------------------| 
C123   |LIANDRI        | 
C123   |JEFF         | 
C123   |K S         | 
C123   |XAN         | 
C123   |KRIEGOR        | 

A.TxnDescriptionD.PromoterNamePartを使用してCUST_IDDのような句に参加したら、私は私の出力を得ることを期待しています。

ここで、1文字の連続した略語を1つの単語として扱うため、テーブルBをCに分割することに固執しています。

この問題または他の解決方法にアプローチする方法についてのご意見は、深く感謝します。ありがとう。 (少なくとも)次の2つの方法であなたの(こぼれ)関数を構築することができ..Butあなたが分割の代が必要c。で、テーブルBを破壊するため

答えて

0

。これは、ネイティブのMySQL関数に存在しない

  1. 使用して適切な分割を使用するか、機能を爆発Bとpopoluate Cから選択するストアドプロシージャ
  2. サーバ側..あなたが持ってたら、その後

を(自分のサーバーサイドENVにより異なり)、テーブルC

のように使用できます

select distinct 
    a.Cust_id 
    , a.PromoterNamePart 
    , case when a.PromoterNamePart like concat('%',d.PromoterNamePart, '%') 
        Then 'YES' 
        ELSE 'NO' 
      END as Fl_Exclude 
from tableA as a 
left join tableD as d 
関連する問題