Ich mag würde das Ergebnis der sys_guid() Funktion zu formatieren wie in this answerFormating String ohne REGEXP_REPLACE und PL/SQL
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 Performance-Gründen vorgeschlagen würde Ich mag die Verwendung von REGEXP_REPLACE vermeiden (da ich eine große Anzahl von Datensätzen verarbeite).
Mein Szenario zu diesem Anwendungsfall vereinfacht werden:
select rawtohex(sys_guid()) GUID
from dual connect by level <= 2;
Offensichtlich ich nicht substr und Verkettung als jeder SUBSTR eine andere SYS_GUID würde verarbeiten können. Ich möchte auch in SQL bleiben, ohne einen Kontextwechsel auf PL/SQL-Funktion.
Jede Idee, wie Zeichenfolge in SQL eine Maske ähnlich wie Datum oder zu formatieren, mit:
to_char(rawtohex(sys_guid(),'CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC') /* not this is clear illegal */