Oracle
 sql >> Database >  >> RDS >> Oracle

ROWIDTONCHAR() Funzione in Oracle

In Oracle Database, il ROWIDTONCHAR() la funzione converte un ROWID valore in NVARCHAR2 tipo di dati

È simile a ROWIDTOCHAR() funzione, tranne che ROWIDTOCHAR() converte un ROWID valore a VARCHAR2 tipo di dati.

Sintassi

La sintassi è questa:

ROWIDTONCHAR(rowid)

Esempio

Ecco un esempio:

SELECT ROWIDTONCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Risultato:

AAATiBAAMAAAAIDAAE

Il risultato della conversione è sempre nel set di caratteri nazionale ed è lungo 18 caratteri.

Ed ecco un dump del risultato rispetto a CHARTOROWID() funzione (che restituisce un ROWID valore dai dati del carattere):

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

Risultato:

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

Un ID tipo di 69 significa che è di ROWID tipo di dati e un ID tipo di 1 significa che è o VARCHAR2 o NVARCHARCHAR2 .

Un esempio di database

Ecco un esempio che restituisce una riga in una tabella di database, in base a un dato ROWID :

SELECT 
    ROWID,
    FIRST_NAME,
    LAST_NAME
FROM EMPLOYEES
WHERE ROWIDTONCHAR(ROWID) LIKE '%KzABa';

Risultato:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Argomento nullo

Se l'argomento è null , il risultato è null :

SET NULL 'null';
SELECT ROWIDTONCHAR(null)
FROM DUAL;

Risultato:

null

Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che si verifica un valore nullo come risultato di un SQL SELECT dichiarazione.

Tuttavia, puoi usare SET NULL per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null deve essere restituito.

Conteggio argomenti non valido

Chiamando ROWIDTONCHAR() senza alcun argomento genera un errore:

SELECT ROWIDTONCHAR()
FROM DUAL;

Risultato:

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

E anche il passaggio di troppi argomenti provoca un errore:

SELECT ROWIDTONCHAR('a', 'b')
FROM DUAL;

Risultato:

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