MySQL: SQL для удаления кода страны из номера телефона

#mysql #sql

Вопрос:

В таблице MySQL [customers] у меня есть столбец телефона [phone] , в котором есть номера телефонов в этом формате:

 [phone] = [  sign][country code][space][number]
 

[number] Деталь может быть в любом формате:

 1234567890
123.456.7890
123 456 7890
(123) 456 7890
 

и т.д.

Но полное значение столбца номер телефона [phone] всегда начинается с [ sign][country code][space]

Пример:

[phone] ценности таковы:

  1 888-888-8888
 1 888.888 (8888)
 31 104232385
 33 143375100
 31 10 423 2385
 33 1 43 37 51 00
 

Я хочу удалить код страны: [ sign][country code][space] со всех телефонных номеров [phone]

Пример:

  1 888-888-8888    =  888-888-8888
 1 888.888 (8888)  =  888.888 (8888)
 31 104232385      =  104232385
 33 143375100      =  143375100
 31 10 423 2385    =  10 423 2385
 33 1 43 37 51 00  =  1 43 37 51 00
 

Я хочу удалить все начальные символы до первого пробела в столбце. Что всегда будет: [ sign][country code]

Или другими словами: Удалите все до первого появления определенного символа: [space] в MySQL?

Каков был бы запрос на это?

Ответ №1:

Одним из способов сделать это было бы выполнить замену регулярного выражения:

 UPDATE customers
SET phone = REGEXP_REPLACE(phone, '^\ [0-9]  ', '');
 


ДЕМОНСТРАЦИЯ

Если вы используете версию MySQL более ранней, чем 8 , то мы можем использовать базовые строковые функции в качестве обходного пути:

 UPDATE customers
SET phone = SUBSTR(phone, INSTR(phone, ' ')   1)
WHERE phone LIKE ' %';
 


ДЕМОНСТРАЦИЯ