Обновление MySQL с условием REGEXP

0

Мне нужно обновить некоторые номера телефонов, начиная с:

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   ^^^^^^^^^^^

Любая помощь или идея?

  • 0
    Обычно вы должны использовать простое условие where в select, например: WHERE phone_number LIKE '39 9%' . «%» Здесь подстановочный знак. Тем не менее, я не совсем понимаю, что именно вы хотите изменить, ваше объяснение не очень понятно.
  • 0
    @KIKOSoftware KIKOSoftware Я хочу заменить все комбинации с 394 to 399 на 3904, 3905, 3906 т. Д. 3904, 3905, 3906 могут быть сделаны в 6 различных запросах, но в одном запросе ... думаю, будет обрабатываться только регулярное выражение или с условием OR .. ..
Показать ещё 1 комментарий
Теги:
mariadb
mysqli
pdo

1 ответ

1
Лучший ответ

Этот запрос будет делать то, что вы хотите. Он использует REGEXP для сопоставления чисел, начинающихся с 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню