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

ROWIDTOCHAR() Funzione in Oracle

In Oracle Database, il ROWIDTOCHAR() la funzione converte un ROWID valore a VARCHAR2 tipo di dati.

Sintassi

La sintassi è questa:

ROWIDTOCHAR(rowid)

Esempio

Ecco un esempio:

SELECT ROWIDTOCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Risultato:

AAATiBAAMAAAAIDAAE

Il risultato della conversione è sempre 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(ROWIDTOCHAR('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "ROWIDTOCHAR"
FROM DUAL;

Risultato:

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

Un ID tipo di 69 significa che è di ROWID tipo di dati e un ID di tipo 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 ROWIDTOCHAR(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 ROWIDTOCHAR(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 ROWIDTOCHAR() senza alcun argomento genera un errore:

SELECT ROWIDTOCHAR()
FROM DUAL;

Risultato:

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

E anche passare troppi argomenti provoca un errore:

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

Risultato:

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