mcs
Goto Top

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.

Content-Key: 82512

Url: https://administrator.de/contentid/82512

Ausgedruckt am: 19.03.2024 um 08:03 Uhr

Mitglied: Biber
Biber 13.03.2008 um 15:10:03 Uhr
Goto Top
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.
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
[Skizze, ungetestet]

Oder hab ich was übersehen?

Grüße
Biber