Hallo Zusammen,
ich stehe gerade auf dem Schlauch. Vielleicht komme ich auch gleich darauf und lösche diesen Beitrag, aber vielleicht könnt Ihr mal mitdenken:
Seht ihr eine Möglichkeit schon beim Insert die [Mail] über die Matchingtabelle in den [Mailnickname] zu übersetzen und in die dbo.IDxMail zu schreiben ohne erst nach dem Insert ein Update zu machen?
![Unbenannt.JPG Unbenannt.JPG](https://www.tutorials.de/data/attachments/46/46040-a183591f6bed4e6bc33a3e5d6d0c7c5f.jpg)
darüber hinaus nutze ich folgende Split Function
![Unbenannt.JPG Unbenannt.JPG](https://www.tutorials.de/data/attachments/46/46041-231d1622f75ee38700dad64d002a6a97.jpg)
Danke für die Mithilfe im Voraus!
Hier noch einmal der eigentliche Code ohne Highlights:
ich stehe gerade auf dem Schlauch. Vielleicht komme ich auch gleich darauf und lösche diesen Beitrag, aber vielleicht könnt Ihr mal mitdenken:
Seht ihr eine Möglichkeit schon beim Insert die [Mail] über die Matchingtabelle in den [Mailnickname] zu übersetzen und in die dbo.IDxMail zu schreiben ohne erst nach dem Insert ein Update zu machen?
![Unbenannt.JPG Unbenannt.JPG](https://www.tutorials.de/data/attachments/46/46040-a183591f6bed4e6bc33a3e5d6d0c7c5f.jpg)
darüber hinaus nutze ich folgende Split Function
![Unbenannt.JPG Unbenannt.JPG](https://www.tutorials.de/data/attachments/46/46041-231d1622f75ee38700dad64d002a6a97.jpg)
Danke für die Mithilfe im Voraus!
Hier noch einmal der eigentliche Code ohne Highlights:
Code:
INSERT INTO [DWDATA].[DBO].[IDxMAIL]
( [ID] ,
[MAIL]
)
SELECT DWDOCID ,
MAIL
FROM dwdata.dbo.PERSONAL
CROSS APPLY [DWDATA].[DBO].[SPLIT](REPLACE(CAST([BEMERKUNG] AS NVARCHAR(MAX)),
N'||', N','), ',')
WHERE [BEMERKUNG] IS NOT NULL
AND [DWDOCID] NOT IN ( SELECT DISTINCT
( [ID] )
FROM [DWDATA].[DBO].[IDxMAIL])
UPDATE dwdata.dbo.IDxMail
SET MAIL = ( SELECT Mailnickname
FROM dwrigths.dbo.Matchingtabelle
WHERE Proxyadresse = dwdata.dbo.IDxMail.mail
)
Code:
CREATE FUNCTION [dbo].[Split]
(
@String NVARCHAR(4000) ,
@Delimiter CHAR(1)
)
RETURNS @Results TABLE
(
idx INT IDENTITY(1, 1)
NOT NULL ,
Mail NVARCHAR(4000)
)
AS
BEGIN
DECLARE @Index INT
DECLARE @Slice NVARCHAR(4000)
SELECT @Index = 1
IF @String IS NULL
RETURN
WHILE @Index != 0
BEGIN
SELECT @Index = CHARINDEX(@Delimiter, @String)
IF ( @Index != 0 )
SELECT @Slice = LEFT(@String, @Index - 1)
ELSE
SELECT @Slice = @String
INSERT INTO @Results
( Mail )
VALUES ( @Slice )
SELECT @String = RIGHT(@String, LEN(@String) - @Index)
IF LEN(@String) = 0
BREAK
END
RETURN
END
GO