MSSQL Konvertierung von Hex to UUID für MSSQL beim Import von Textdaten
Für einen sich wiederholenden Import von Textdateien muß ich folgende Zeichenkette umwandeln:
0x067ac532aa8ec1489bf40ab178789dc5
nach
Uniqueidentifier:
{7a06-32c5-8eaa-48c1-9bf40ab178789dc5}
Unter SYBASE gibt es die Funktion STRTOUUID() - leider nicht im Microsoft SQL Server ;-(
Hier benötige ich eine serverbasierte Funktion.
0x067ac532aa8ec1489bf40ab178789dc5
nach
Uniqueidentifier:
{7a06-32c5-8eaa-48c1-9bf40ab178789dc5}
Unter SYBASE gibt es die Funktion STRTOUUID() - leider nicht im Microsoft SQL Server ;-(
Hier benötige ich eine serverbasierte Funktion.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82512
Url: https://administrator.de/forum/mssql-konvertierung-von-hex-to-uuid-fuer-mssql-beim-import-von-textdaten-82512.html
Ausgedruckt am: 11.01.2025 um 01:01 Uhr
1 Kommentar
Moin mcs,
vielleicht verstehe ich die Frage nicht richtig, aber...
Du kannst Doch beliebige UDFs inzwischen auch beim M$-SQLServer schreiben, oder nicht?
Also kannst Du doch auch eine UDF dbo.StrToUUID() oder myStrToUUID() anlegen.
[Skizze, ungetestet]
Oder hab ich was übersehen?
Grüße
Biber
vielleicht verstehe ich die Frage nicht richtig, aber...
Du kannst Doch beliebige UDFs inzwischen auch beim M$-SQLServer schreiben, oder nicht?
Also kannst Du doch auch eine UDF dbo.StrToUUID() oder myStrToUUID() anlegen.
CREATE FUNCTION MyStrToUUID
( @strIn varchar(34) )
RETURNS uniqueidentifier
AS
BEGIN
-- Dein Beispiel
-- 0x067ac532aa8ec1489bf40ab178789dc5
-- 0000000001111111111222222222233333
-- 1234567890123456789012345678901234
-- nach Uniqueidentifier:
--{7a06-32c5-8eaa-48c1-9bf40ab178789dc5}
RETURN ( cast(
instr (@StrIn, 5,2 ) || instr (@StrIn, 3,2 ) ||
instr (@StrIn, 9,2 ) || instr (@StrIn, 7,2 ) || '-' ||
instr (@StrIn, 11,2 ) || instr (@StrIn, 9,2 ) || '_' ||
instr (@StrIn, 15,2 ) || instr (@StrIn, 13,2 ) || '_' ||
instr (@StrIn, 19,2 ) || instr (@StrIn, 17,2 ) || '_' ||
instr (@StrIn, 23,2 ) || instr (@StrIn, 21,2 ) ||
instr (@StrIn, 27,2 ) || instr (@StrIn, 25,2 ) ||
instr (@StrIn, 31,2 ) || instr (@StrIn, 29,2 ) ||
instr (@StrIn, 33,2 ) as uniqueidentifier) )
END
GO
Oder hab ich was übersehen?
Grüße
Biber