In der Oracle-Datenbank die CHARTOROWID()
Funktion konvertiert einen String-Wert in ROWID
Datentyp.
Syntax
Die Syntax lautet wie folgt:
CHARTOROWID(char)
Wobei char
ist einer von CHAR
, VARCHAR2
, NCHAR
, oder NVARCHAR2
Datentypen.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Ergebnis:
AAATiDAAMAAALKzABa
Obwohl dies ein schnelles und einfaches Beispiel ist, zeigt es uns nicht, dass das Endergebnis vom Typ ROWID
ist .
Wir können dies jedoch folgendermaßen herausfinden:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Ergebnis:
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
Hier habe ich den DUMP()
verwendet Funktion, um die interne Darstellung der ersten fünf Zeichen zu erhalten.
Aber wichtig ist, dass diese Funktion auch die Typ-ID zurückgibt. Der erste ist 96
, die die Typ-ID für CHAR
ist und NCHAR
, und der zweite ist 69
, die die Typ-ID für ROWID
ist .
Das zeigt also, dass CHARTOROWID()
Funktion konvertiert tatsächlich einen String in eine ROWID
.
Ein Datenbankbeispiel
Hier ist ein Beispiel, das eine Zeile in einer Datenbanktabelle zurückgibt, basierend auf einer gegebenen ROWID
:
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Ergebnis:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
Ungültige ROWID
Übergabe einer ungültigen ROWID
führt zu einem Fehler:
SELECT CHARTOROWID('oops')
FROM DUAL;
Ergebnis:
Error report - ORA-01410: invalid ROWID
Null-Argument
Wenn das Argument null
ist , ist das Ergebnis null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Ergebnis:
null
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn als Ergebnis eines SQL-SELECT
ein Nullwert auftritt Aussage.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Ungültige Argumentanzahl
Aufruf von CHARTOROWID()
ohne Argumente führt zu einem Fehler:
SELECT CHARTOROWID()
FROM DUAL;
Ergebnis:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Und das Übergeben zu vieler Argumente führt ebenfalls zu einem Fehler:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Ergebnis:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"