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

ROWIDTONCHAR()-Funktion in Oracle

In der Oracle-Datenbank das ROWIDTONCHAR() Funktion wandelt eine ROWID um Wert zu NVARCHAR2 Datentyp

Es ähnelt dem ROWIDTOCHAR() Funktion, außer dass ROWIDTOCHAR() konvertiert eine ROWID Wert zu VARCHAR2 Datentyp.

Syntax

Die Syntax lautet wie folgt:

ROWIDTONCHAR(rowid)

Beispiel

Hier ist ein Beispiel:

SELECT ROWIDTONCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Ergebnis:

AAATiBAAMAAAAIDAAE

Das Ergebnis der Konvertierung ist immer im nationalen Zeichensatz und 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(ROWIDTONCHAR('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "ROWIDTONCHAR"
FROM DUAL;

Ergebnis:

                 CHARTOROWID               ROWIDTONCHAR 
____________________________ __________________________ 
Typ=69 Len=10: ^@,^A,8,81    Typ=1 Len=36: ^@,A,^@,A   

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 ROWIDTONCHAR(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 ROWIDTONCHAR(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 ROWIDTONCHAR() ohne Argumente führt zu einem Fehler:

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

Ergebnis:

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