gpt4 book ai didi

mysql - mysql表中的前导数字

转载 作者:行者123 更新时间:2023-11-29 10:37:17 26 4
gpt4 key购买 nike

当我运行时:

select * from jfi.ambitiontempdata limit 2000;

我的结果集是正确的,但我的电话号码有问题。我的 calling_partycalling_party 字段中的一些号码是 4 位分机号,这很好,有些是普通的 10 位号码,这也很好,但是,有些有一个前导“1”或其他数字。

有没有办法在此表上运行查询来说明如果 Calling_party 或 Called_pa​​rty 是 11 位数字,则删除前导数字

更新:

这是我当前的查询,用于将一个表中的电话号码与另一个表中的电话号码进行匹配

SELECT ua.*, u.firstn, u.lastn,  u.Extension
FROM
(select a.* FROM jfi.ambitiontempdata a
inner join jfi.ambition_customer_data c on a.called_party = c.phone
where a.outbound = 1
UNION
select a.* FROM jfi.ambitiontempdata a
inner join jfi.ambition_customer_data c on a.calling_party = c.phone
where a.outbound = 0) ua
INNER JOIN jackson_id.users u
on ua.Extension = u.Extension;

jfi.ambitiontempdata 电话号码在 Called_pa​​rty 和 Calling_party 中的某些号码是标准 10 位数字,但有些号码有前导“1”,但是,我的ambition_customer_data 中的所有号码都有 10 位数字。

最佳答案

更新答案以解决更新的问题:
您可以抓取最右边 10 位数字的子字符串(如果只有 4 位,则只会返回 4 位数字)。我假设您的电话号码字段是 (var)char 字段,而不是 bigint。如果它们存储在 bigint 字段中,那么您需要在将它们作为字符串操作之前将它们转换为 char。

您可以使用RIGHT函数来执行此操作。

SELECT ua.*, u.firstn, u.lastn,  u.Extension
FROM
(select a.* FROM jfi.ambitiontempdata a
inner join jfi.ambition_customer_data c on right(a.called_party, 10) = c.phone
where a.outbound = 1
UNION
select a.* FROM jfi.ambitiontempdata a
inner join jfi.ambition_customer_data c on right(a.calling_party, 10) = c.phone
where a.outbound = 0) ua
INNER JOIN jackson_id.users u
on ua.Extension = u.Extension;

警告:通过函数运行 call*_party 列将阻止优化器在这些列上使用索引。因此,随着 ampitiontempdata 表的增长,性能将会下降。

理想情况下,您的 ampition_customer_data 表中应存储相同的电话号码,或者在您的 opportunitytempdata 表中具有单独的 10 个字符列。另一种解决方案可能是使用一个单独的表,其中包含电话号码和 ID,然后只需在表中引用该 ID,而不是完整的电话号码。

关于mysql - mysql表中的前导数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46199870/

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