【问题标题】:Replace phone number prefix mysql替换电话号码前缀mysql
【发布时间】:2018-10-04 08:12:42
【问题描述】:

我需要选择并用新号码前缀 (072) 替换所有电话号码前缀 (0122),例如

01220000000 到 0720000000

但是我的表格有很多电话号码的格式

('+11201220000000'、'+12201220000000@abc.com' 或 '01220000000/01220000001')。

我尝试使用 REGEXP 查找 Phone NO 的格式类似于 ^/0122/[0-9]{1,7}$,但我遇到了问题

01220000000/01220000001。

我应该如何使用Mysql通过一个查询更新所有电话号码

【问题讨论】:

  • 01220000000/01220000001 一个实际的电话号码?它看起来像两个串联的电话号码

标签: mysql prefix


【解决方案1】:

使用REGEXP,您似乎走在了正确的轨道上。以下是我对更新的表述:

UPDATE yourTable
SET phone = REPLACE(CONCAT('072', SUBSTRING(phone, 5)), '/0122', '/072')
WHERE phone REGEXP '^[0+]122';

这个答案应该工作假设,对于出现两个数字的情况,这些数字总是用正斜杠分隔 并且第一个数字将是更新的候选者,只要第二个数字也是候选人。

请注意,您的数据未标准化。包含多个电话号码的字段不是好的数据库设计。

Demo

【讨论】:

  • 嗨,蒂姆·比格莱森,如果我说的不够清楚,对不起。实际上,我想将电话号码“+1120122xxxxxxx”更改为“+112072xxxxxxx”,“+0112”只是国家代码,所以我想保留它。
  • 您的所有号码总是有一个前导的+112 国家代码吗?如果没有,你就不能在 MySQL 中真正做到这一点。
  • 我可以用php替换它然后更新到数据库吗? - @蒂姆·比格莱森
  • 这是我的新主题:stackoverflow.com/questions/52697114/…。 @蒂姆·比格莱森
猜你喜欢
  • 1970-01-01
  • 2011-02-07
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多