Vielleicht muss ja noch jemand vor der offiziellen SEPA-Pflicht im Februar 2014 noch schnell ein paar Kontodaten in seinem Bestand konvertieren. Falls diese Daten zufällig im SQL-Server liegen, dessen Express-Version ja auch gratis verfügbar ist, so kann er dafür die unten stehen Funktion nutzen. Hintergründe zur Berechnung der IBAN-Prüfziffer finden sich hier oder auch bei Wikipedia. Möchte man neben der IBAN auch den BIC in einem Massen-Update bestimmen, so helfen die Daten der Bundesbank. Bei letzterer lassen sich die Rohdaten der Bankleitzahlen zu allen Banken in Deutschland herunterladen, darin ist auch der Bank Identifiier Code (BIC) enthalten. Damit hat man alle Bausteine zusammen, um per SQL einen größeren Bestand an Bankverbindungen in seiner Datenbank zu aktualisieren. Für die Validierung von IBAN-Eingaben in Office-Produkten, z.B. Access, gibt es auch schon eine schöne VBA-Funktion im Blog von Aswin van Woudenberg.
T-SQL-Funktion zum Berechnen einer deutschen IBAN (International Bank Account Number) aus (alter) Kontonummer und BLZ (Bankleitzahl):
-- ========================================================= -- Author: Dr. Markus Kersting -- Create date: 01.11.2013 -- Description: Berechnet die IBAN für deutsche Bankkonten -- License: Free for all, No Warranty -- ========================================================= CREATE FUNCTION CalculateIBAN ( @actnr nvarchar(20), -- Alte Kontonummer, 10 Stellen @blz nvarchar(20) -- Banklleitzahl, 8 Stellen ) RETURNS varchar(22) -- Deutsche IBANs sind immer 22-stellig AS BEGIN DECLARE @countrycode nvarchar(2) = 'DE', -- Ländercode, immer DE @bban nvarchar(30), -- neue Banknummer @ban nvarchar(30), -- neue Kontonummer @iban nvarchar(22), -- die Ausgabe-IBAN, In Deutschland immer 22 Stellen @inum numeric(35,0), -- Konstruierte Nummer für Berechnung der Prüfziffer @chk numeric(2,0), -- 2-Stellige Prüfziffer @calcstring nvarchar(50); set @iban=null; -- Teile zusammenbauen, ggfs. Leerzeichen entfernen set @bban=right('00000000'+replace(@blz,' ',''),8); -- 8-Stellige BLZ set @ban=right('0000000000'+replace(@actnr,' ',''),10); --10-Stellige Kontonummer -- Berechnung nur durchführen, wenn Kontonummer und BLZ vorhanden und nicht NULL if (isnumeric(@bban)=1) and (isnumeric(@ban)=1) begin -- Nummer für Prüfsummenbrechneng erstellen -- Ländercode DE + 00 rechts. DE in Zahl umwandeln, 13=D, 14=E set @calcstring=@bban+@ban+'131400'; -- Prüfziffer set @inum=@calcstring; set @chk=98-(@inum % 97); -- IBAN zusammensetzen set @iban=@countrycode+right('0'+cast(@chk as nvarchar),2)+@bban+@ban end -- Ausgabe return @iban; END GO