MySQL更新与REGEXP条件

问题描述 投票:0回答:1

我需要更新一些电话号码,例如:

39 9xxxxx 39 8xxxxx from 9 to 4添加0 in front

但我需要找到39[4-9]xxxxx的电话号码

UPDATE table SET phone_number = CONCAT(
REPLACE(
    LEFT(phone_number,2), '39', '390'),      
    SUBSTRING(phone_number, 2, CHAR_LENGTH(phone_number)
)) WHERE phone_number REGEXP '^[4-9]{3}';

stuck in here   ^^^^^^^^^^^

任何帮助或想法?

mysql mysqli pdo mariadb
1个回答
1
投票

此查询将执行您想要的操作。它使用REGEX来匹配以394到399开头的数字:

UPDATE numbers 
SET phone_number = CONCAT(LEFT(phone_number, 2), '0', SUBSTR(phone_number, 3))
WHERE phone_number REGEXP '^39[4-9]'

SQLFiddle Demo

© www.soinside.com 2019 - 2024. All rights reserved.