2017-02-14 15 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        | 

После присоединения и D на Cust_ID и как положение об использовании D.PromoterNamePart на A.TxnDescription, я ожидаю, чтобы получить мой выход.

Теперь я застрял в разбивке таблицы B на C, потому что однократные последовательные аббревиатуры должны рассматриваться как одно слово.

Любые мысли о том, как подойти к этой проблеме или альтернативным решениям, будут глубоко оценены. Благодарю.

ответ

0

За нарушение таблицы б в с вам нужно нечто для разделения .. это нет в собственной функции тузд ..но вы можете построить свою функцию (разлитой) в два пути (по крайней мере)

  1. с использованием хранимая процедура
  2. стороне сервера .. выбор из б и popoluate с помощью надлежащего раскола или взорваться функции (в зависимости от вашей стороне сервера окр)

затем После того как вы таблицу с

Вы можете использовать как:

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 
Смежные вопросы