MYSQL,将一列中的字符串的数字字符插入另一列

时间:2018-07-10 18:10:05

标签: mysql

我正在尝试清理数据库的电话号码,以便我们可以轻松地搜索它们。在TEL列中,我们有如下行:

654-598-5487
654.254.2456
(458)-5458789 e.3

我想将所有这些值复制到仅传输数字字符的新列中:

6545985487
6542542456
45854587893

新列(TEL_NO_FORMAT)是一个很大的整数,它仅允许数字,但是如果我执行以下操作:

UPDATE CLIENTS set `TEL_NO_FORMAT` = `TEL`

它将仅传输找到的第一个数字字符,而忽略其余的数字:

654
654
NULL

2 个答案:

答案 0 :(得分:1)

最简单的方法是REGEXP_REPLACE(MySQL 8.0 +):

SELECT *, REGEXP_REPLACE(tel_no_format, '[^0-9]','') AS result
FROM clients

在更新查询中回答问题

UPDATE CLIENTS SET TEL_NO_FORMAT = REGEXP_REPLACE(TEL, '[^0-9]','');

答案 1 :(得分:0)

您应在

之前替换不需要的字符
UPDATE CLIENTS set `TEL_NO_FORMAT` = replace(replace(replace(`TEL`, '.',''),'-',''),')','')

因为某些字符(例如'-')在转换过程中会产生问题。

无论如何,一个大的int不能正确地管理最终的电话号码0,例如:

00453778988