簡體   English   中英

MySQL:從電話號碼中刪除國家代碼的 SQL

[英]MySQL: SQL to remove country code from phone number

在 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

我想從所有電話號碼[phone]刪除國家代碼: [+ 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]

或者換句話說:在 MySQL 中第一次出現某個字符之前刪除所有內容: [space]

對它的查詢是什么?

這樣做的一種方法是進行正則表達式替換:

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

演示

如果您使用的是早於 8+ 的 MySQL 版本,那么我們可以使用基本字符串函數作為解決方法:

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

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM