Oracle
 sql >> Datenbank >  >> RDS >> Oracle

CHARTOROWID()-Funktion in Oracle

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"