Funktionsgruppe: Zeichenkettenfunktion
HEX_OF_VALUE() stellt einen Wert eines beliebigen Datentyps in Hexadezimalform dar, d.h. in einer Zeichenkette bestehend aus den Sedezimalzeichen 0,1,2,...,9,a,b,...,f.
Damit können beliebige Bitmuster lesbar ausgegeben werden.
HEX_OF_VALUE (
ausdruck )
ausdruck
Ausdruck, dessen Wert in Hexadezimalform dargestellt werden soll.
Sein Datenyp darf nicht CHARACTER VARYING(n) mit einer Maximallänge n > 16000 und nicht NATIONAL CHARACTER VARYING(n) mit einer Maximallänge n > 8000 sein.
ausdruck darf kein multipler Wert mit Dimension > 1 sein.
Ergebnis
Wenn der Wert von ausdruck der NULL-Wert ist, dann ist das Ergebnis der NULL-Wert.
Sonst:
Die interne Darstellung des Werts von ausdruck in Hexadezimalform als alphanumerische Zeichenkette. Deren Länge ist in der Tabelle auf der nächsten Seite angegeben.
Datentyp: CHARACTER VARYING mit einer Maximallänge gemäß folgender Tabelle.
Datentyp von ausdruck | Datentyp des Ergebnisses | Länge des Ergebnisses, falls nicht NULL |
CHAR(n) | VARCHAR(2*n) | 2*n |
VARCHAR(n) mit n <= 16000 | VARCHAR(2*n) | 0 bis 2*n, gerade |
NCHAR(n) | VARCHAR(4*n) | 4*n |
NVARCHAR(n) mit n <= 8000 | VARCHAR(4*n) | 0 bis 4*n, durch 4 teilbar |
SMALLINT | VARCHAR(4) | 4 |
INTEGER | VARCHAR(8) | 8 |
NUMERIC(p,s) | VARCHAR(2*p) | 2*p |
DECIMAL(p,s) | VARCHAR(q 1) | q 1 |
REAL, FLOAT (<= 21 Stellen) | VARCHAR(8) | 8 |
DOUBLE PRECISION, FLOAT (>= 22 Stellen) | VARCHAR(16) | 16 |
DATE | VARCHAR(12) | 12 |
TIME(3) | VARCHAR(16) | 16 |
TIMESTAMP(3) | VARCHAR(28) | 28 |
Tabelle 15: Datentypen und Längen bei HEX_OF_VALUE()
1q=p+2, falls p gerade; q=p+1, falls p ungerade.
Beispiele
HEX_OF_VALUE (CAST (254 AS SMALLINT)) 00fe HEX_OF_VALUE ('ABC') c1c2c3
Interne Darstellung von Werten in SESAM/SQL
Die interne Darstellung von Werten ungleich NULL in SESAM/SQL, wie sie die Funktionen REP_OF_VALUE() und HEX_OF_VALUE() liefern, ist ähnlich der internen Darstellung entsprechender Werte in anderen Programmiersprachen (z.B. COBOL, C).
SQL-Datentyp | Beispielwert | interne Darstellung |
CHAR, VARCHAR | 'ABC' |
|
NCHAR, NVARCHAR | N'ABC' |
|
SMALLINT | +300 |
|
INTEGER | +300 |
|
NUMERIC(p,s) | +123.5 |
|
DECIMAL(p,s) FLOOR(p/2)1 Byte mit je 2 Ziffern, | +123.5 |
|
REAL, FLOAT (<= 21 Stellen) | +2.550625e+2 |
|
DOUBLE PRECISION, FLOAT (>= 22 Stellen) | +2.5506250000e+2 |
|
DATE | DATE'2000-08-11' |
|
TIME(3) | TIME'12:34:56.123' |
|
TIMESTAMP(3) | TIMESTAMP |
|
Tabelle 16: Überblick über die interne Darstellung von Werten in SESAM/SQL
1FLOOR(p/2) ist die größte ganze Zahl <= p/2