Raketenheinz: Telefonnummern in Adressdatenbank

Beitrag lesen

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:

  1. Die Spalte t gelesen und in dem String
  2. führende ++ und 00 zu + - sodann
  3. die Angabe (0) entfernt - sodann
  4. führende Nullen durch 49 ersetzt
  5. alles, was keine Ziffer ist entfernt
  6. 00 davor notiert.
  7. 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.