Hier mal ein Beispiel wie man mit einer stored procedure Länderpräfixe aus Telefonnummern entfernen und in ein anderes Feld schreiben kann:
CREATE PROCEDURE TelPrefix
AS
BEGIN
DECLARE @tel1 VARCHAR(50)
DECLARE @tel2 VARCHAR(50)
DECLARE @fax VARCHAR(50)
DECLARE @prefix_int VARCHAR(50)
DECLARE @id decimal(15, 0)
DECLARE @positonKlammer INT
DECLARE #Curs CURSOR fast_Forward FOR
SELECT [prefixe_int], [tel1], [tel2], [fax], id
from tabelle
WHERE (LEFT(tel,1)='+' OR LEFT(tel1,2)='00')
OPEN #Curs
Fetch next from #Curs into @prefix_int, @tel, @id
while @@FETCH_STATUS = 0
BEGIN
IF LEN(@tel1) > 0 BEGIN
SET @positonKlammer = PATINDEX('%(%',@tel1) -1
-- vielleicht gibt es ein Leerzeichen statt einer Klammer
IF @positonKlammer<0
SET @positonKlammer = PATINDEX('% %',@tel1)
-- vielleicht gibt es ein "- "statt einer Klammer
IF @positonKlammer<0
SET @positonKlammer = PATINDEX('%-%',@tel1)
IF @positonKlammer>0
BEGIN
SET @prefix_int = LEFT(@tel1,@positonKlammer)
-- keine Klammern und keine führenden und folgenden Leerzeichen
SET @prefix_int = RTRIM(LTRIM(REPLACE( REPLACE(@prefix_int,'+',''), '00','') ) )
SET @tel1 = RIGHT(@tel1,LEN(@tel1)-@positonKlammer)
SET @tel1 = RTRIM(LTRIM(REPLACE( REPLACE(@tel1,'(',''),')','')))
END
END
IF @positonKlammer>0
UPDATE Tabelle SET tel=@tel, fax=@fax, prefixe_int=@prefix_int WHERE id=@id
Fetch next from #Curs into @prefix_int, @tel, @id
END
CLOSE #Curs
deallocate #Curs
END