如何在mysql中51=substring(051- 3328328,1,3)

e4yzc0pl  于 2023-06-04  发布在  Mysql
关注(0)|答案(1)|浏览(93)

此图像包含人和国家表,我想连接的基础上电话号码开始三个字符和国家代码的国家表
我写了这个查询来连接这两个表

select *
FROM person
    left join country on country_code=substring(phone_number,1,3)

怀疑-----
1.如何将051与51匹配,因为051作为子串与51作为子串完全不同?
输出查询由jarlh

j8ag8udp

j8ag8udp1#

您的主要问题是您试图将2个字符代码(如51)与3个字符代码(如051)等同起来
我将用子字符串()挑出电话号码的前3个字符,并将它们转换为整数,以便像这样进行比较,然后测试一侧的前导零将被删除
另外,由于在两个表中都有一个名为name的列,因此我将专门挑选出希望在结果中使用的实际列,并给它们取别名

select p.name as persons_name, c.name as country_name, c.country_code, p.phone_number
FROM person p
    left join country c on c.country_code = cast(substring(p.phone_number,1,3) AS UNSIGNED);
Moncef      Morocco     212 212-1234567
Maroua      Morocco     212 212-6543214
Jonathan    Peru        51  051-1234567
Meir        Israel      972 972-1234567
Rachael     Israel      972 972-0011100

相关问题