Ein bisschen Eigenlob muss sein

Natürlich auch weil ein Großteil der Konkurrenz leider erst gar nicht angetreten ist, konnte ich den „Masters-Pokal“ bei den Vereinsmeisterschaften des SV Arnum verteidigen. Das ist natürlich mehr Spaß als Ernst aber man freut sich trotzdem 😉

Wer auch Lust hat einmal die Woche mit ein paar „Hobby-Schwimmern mittleren Alters“ zu trainieren und danach ein Feierabend-Pils zu nehmen, sollte mal Donnerstags um 19:00 Uhr im Büntebad bei unserem Training vorbeischauen oder sich bei der Schwimmsparte des SV Annum melden.

Pokal SV Arnum 2013, vorne

SEPA mit T-SQL

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