我有一个相当大的MySQL数据库,我目前正在使用它。它存储一般联系信息。表名是'客户'我希望改变的专栏名为' serviceNumber'。
我们刚刚发现我们需要改变许多记录的格式。以下是详细信息:
此列中的大多数电话号码都包含我们的国家/地区代码(' 61400000000'),有些电话号码的格式仅为本地号码(' 0400000000')。 我知道我可以告诉MySQL通过并只是替换所有出现的' 614'与' 04',但问题是很多数字恰好包含' 614'在实际的电话号码本身。
我如何仅针对以开始>>' 614'?
的记录进行更换答案 0 :(得分:0)
我会使用以下方法:
update customers
set serviceNumber = concat ('04', substring (serviceNumber, 4))
where serviceNumber like '614%';
where
子句将update
限制为使用614
编号为 的行,而set
1}}将其更改为04
,然后删除614
后的当前数字。
但是,您可能想要进行一些额外的健全性检查,例如确保长度正确。
这些是我认为的澳大利亚数字(给定+61
前缀以及你在悉尼以外的事实)你可能有兴趣知道我的本地(八位数)数字以{{1开头(我们在西海岸这里很奇怪)。
可能还有其他人开始616
,您不希望将某人的 本地 号码614
更改为{{} 1}}。
由于澳大利亚的手机都是(目前)61431415
,所以首先会有一个良好的首选:
0431415
您可能还对以下事实感兴趣:ACMA预计会在2017年开始分配614xx yyy zzz
手机号码,而当前的update customers
set serviceNumber = concat ('04', substring (serviceNumber, 4))
where serviceNumber like '614%'
and char_length(serviceNumber) >= 11;
手机号码开始耗尽。如果你对前瞻性思维感兴趣,你可能至少应该考虑。
答案 1 :(得分:0)
update tableName set number = concat ('04', substring (number, 4)) where number like '614%';
这可能对你有所帮助 1首先替换前3位数 然后我们用04
连接了现有的数字