gpt4 book ai didi

mysql - 部分字符串匹配mysql

转载 作者:行者123 更新时间:2023-11-29 19:24:52 26 4
gpt4 key购买 nike

我正在处理客户的银行交易数据,并且希望排除包含部分或全部客户名称的交易。我的数据如下所示:

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 |

Cust_ID 上加入 AD 以及使用 D.PromoterNamePart< 的 like 子句A.TxnDescription 上,我期待得到我的输出。

现在,我陷入了将表 B 分解为 C 的困境,因为单字母连续缩写将被视为单个单词。

任何有关如何解决此问题或任何替代解决方案的想法将不胜感激。谢谢。

最佳答案

为了打破c中的表b,你需要一些东西来分割..这在 native mysql函数中不存在..但是你可以用两种方式(至少)构建你的(split)函数

  1. 使用存储过程
  2. 服务器端..从b中选择并使用split或explode函数正确填充C(取决于您的服务器端环境)

然后一旦你有了表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

关于mysql - 部分字符串匹配mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42223979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com