Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - TSQL: Automatisch Alphabetisch hochzählen


timonsp - Do 12.01.12 16:04
Titel: TSQL: Automatisch Alphabetisch hochzählen
Hallo Zusammen!
Vielleich kann mir hier jemand weiterhelfen, googlen war erfolglos. :(

Ich habe eine Tabelle, welche über eine Spalte "Version" verfügt. Die Versionnummern sind alphabetisch realisiert. Jetzt möchte ich diese Versionnummern automatisieren, d.h. jedesmal wenn ein Datensatz geändert wird, soll eine neue Version geschrieben werden.
Die Beschriftung ist so vorgegeben: A,B,C,D ..., Z AA,AB,AC,AD, ..., AZ BA,BB,BC usw.
Die Datenstruktur ist bereits gegeben und darf nicht verändert werden.

Ich habe es mit char("number") versucht, jedoch wenn es um zweistellige Versionenzeichen geht, bin ich überfordert.
Hat jemand eine Idee hierzu?
Danke im Voraus!

Gruss Timon


Ralf Jansen - Do 12.01.12 17:24

Zitat:
Die Datenstruktur ist bereits gegeben und darf nicht verändert werden.


Ich darf trotzdem anmerken das das eigentlich großer M**t ist?

Ich würde eine Stored Function vorschlagen z.B. so


SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
CREATE FUNCTION ufn_NextVersion(@version varchar(10))
RETURNS varchar(10)
AS
BEGIN             
    IF (@version is NULLOR (LEN(@version) = 0) RETURN 'A' -- oder @version      
    
    IF RIGHT(@version, 1) = 'Z'
      RETURN @Version + 'A'      
    ELSE
      RETURN SUBSTRING(@version, 0, LEN(@version)) + CHAR(ASCII(RIGHT(@version, 1))+1)
    RETURN 'A' -- wird nie erreicht
END


Dann


SQL-Anweisung
1:
UPDATE TABLE MeineLiebeTabelle SET .... Blah .... , Version = dbo.ufn_NextVersion(Version);                    


Ähnlichen Code solltest du aber genauso in einem Instead Of Trigger beim updaten benutzen können.