Ich habe da zufällig was “fertiges” - das kannst Du an Deine Bedürfnisse anpassen.
An den Inserts erkennst Du (grob), welche Telefonnummern es verarbeitet.
- Die Tabelle wird angelegt und mit den Testdaten gefüttert.
Dann werden:
- Die Spalte
t
gelesen und in dem String - führende
++
und00
zu+
- sodann - die Angabe
(0)
entfernt - sodann - führende Nullen durch
49
ersetzt - alles, was keine Ziffer ist entfernt
00
davor notiert.- Der neue String wird in der Spalte t_n eingefügt.
Zuletzt wird die Tabelle ausgegeben.
USE `test`;
DROP TABLE IF EXISTS `ptest`;
CREATE table `ptest`( `t` TEXT(30) , `t_n` TEXT(30) );
INSERT INTO `ptest` (`t`) VALUES('099 123456789');
INSERT INTO `ptest` (`t`) VALUES('099 1234567 89');
INSERT INTO `ptest` (`t`) VALUES('0049 99 1234567-89');
INSERT INTO `ptest` (`t`) VALUES('+49 99 1234567-89');
INSERT INTO `ptest` (`t`) VALUES('++49 99 1234567-89');
INSERT INTO `ptest` (`t`) VALUES('0049 (0)99 1234567-89');
INSERT INTO `ptest` (`t`) VALUES('+49 (0)99 1234567-89');
INSERT INTO `ptest` (`t`) VALUES('++49 (0)99 1234567-89');
UPDATE `ptest` SET `t_n` =
CONCAT (
'00',
REGEXP_REPLACE (
REGEXP_REPLACE (
REPLACE (
REGEXP_REPLACE(
t,
'^\\+\\+|^00',
'+'
),
'(0)',
''
),
'^0',
'+49'
),
'[^0-9]',
''
)
)
;
SELECT `t`, `t_n` FROM `ptest`;
Weitere Anpassungen an Deine Bedürfnisse sind wahrscheinlich notwendig, aber eigentlich "nur noch Arbeit". So sollte z.B. ein Index für die Suche geschaffen werden.