#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 ' %';