Formating UUID String ohne REGEXP_REPLACE und PL / SQL
Ich möchte das Ergebnis der Funktion sys_guid () wie in @ vorgeschlagen formatierediese Antwort
select regexp_replace(rawtohex(sys_guid())
, '([A-F0-9]{8})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{12})'
, '\1-\2-\3-\4-\5')
as FORMATTED_GUID
from dual
Aus Gründen der Leistung möchte ich die Verwendung von regexp_replace vermeiden (da ich eine große Anzahl von Datensätzen verarbeite).
Mein Szenario kann auf diesen Anwendungsfall vereinfacht werden:
select rawtohex(sys_guid()) GUID
from dual connect by level <= 2;
Natürlich kann ich nicht Substr und Verkettung verwenden, da jeder SUBSTR eine andere SYS_GUID verarbeiten würde. Ich möchte auch in SQL bleiben, ohne einen Kontextwechsel zur PL / SQL-Funktion.
Ich habe eine Idee, wie ich Zeichenfolgen in SQL mithilfe einer Maske ähnlich wie Datum oder Nummer formatieren kann:
to_char(rawtohex(sys_guid(),'CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC') /* note, this is clear illegal */