首页 > 解决方案 > 部分匹配号字段

问题描述

嘿,伙计们,我在工作中真的很挣扎......我有 2 个带有注册号的表,在表 1 中,这些数字是 3、4、5、6 或 7 位数字。在表 2 上,这些数字长 9 位(表 1 中的数字相同,但用 0 填充)。

Example: table1 | table2
          134   |000000134
         2364   |000002364
        45678   |000045678

所以我需要进行一个与这两个匹配的连接查询,以获取拥有这些数字的人的姓氏。

我有这样的事情:

-SELECT prest.lastname,aut.registrationcode, aut.date,

-SUM(CASE WHEN aut.type like '%O%' THEN 1 ELSE 0 END) as 
                                                    'Online',
-SUM(CASE WHEN aut.type like '%D%' THEN 1 ELSE 0 END) as 
                                                    'Difered',

-count(*) AS TOTAL
-FROM prest INNER JOIN aut ON 
-aut.registrationcode like '%' || prest.code

-WHERE (aut.date BETWEEN '2019-12-01' AND '2019-12-31')

-GROUP BY prest.lastname, aut.date;  

希望您能够帮助我。

标签: mysqljoinmatch

解决方案


假设包含注册号的两列都具有文本数据类型(VARCHAR、CHAR、TEXT...),您可以使用该LPAD()函数:

...
FROM table1
JOIN table2 ON LPAD(table1.registrationcode, 9, '0') = table2.registrationcode
...

推荐阅读