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"