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

ROWIDTOCHAR()-Funktion in Oracle

In der Oracle-Datenbank die ROWIDTOCHAR() Funktion konvertiert eine ROWID Wert zu VARCHAR2 Datentyp.

Syntax

Die Syntax lautet wie folgt:

ROWIDTOCHAR(rowid)

Beispiel

Hier ist ein Beispiel:

SELECT ROWIDTOCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Ergebnis:

AAATiBAAMAAAAIDAAE

Das Ergebnis der Konvertierung ist immer 18 Zeichen lang.

Und hier ist ein Dump des Ergebnisses im Vergleich zu CHARTOROWID() Funktion (die eine ROWID zurückgibt Wert aus Zeichendaten):

SELECT 
    DUMP(CHARTOROWID('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "CHARTOROWID",
    DUMP(ROWIDTOCHAR('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "ROWIDTOCHAR"
FROM DUAL;

Ergebnis:

                 CHARTOROWID              ROWIDTOCHAR 
____________________________ ________________________ 
Typ=69 Len=10: ^@,^A,8,81    Typ=1 Len=18: A,A,A,T   

Eine Typ-ID von 69 bedeutet, dass es von ROWID ist Datentyp und eine Typ-ID von 1 bedeutet, dass es entweder VARCHAR2 ist oder NVARCHARCHAR2 .

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 ROWIDTOCHAR(ROWID) LIKE '%KzABa';

Ergebnis:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Null-Argument

Wenn das Argument null ist , ist das Ergebnis null :

SET NULL 'null';
SELECT ROWIDTOCHAR(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 ROWIDTOCHAR() ohne Argumente führt zu einem Fehler:

SELECT ROWIDTOCHAR()
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 ROWIDTOCHAR('a', 'b')
FROM DUAL;

Ergebnis:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"