I Oracle Database er ROWIDTOCHAR()
funktion konverterer en ROWID
værdi til VARCHAR2
datatype.
Syntaks
Syntaksen ser sådan ud:
ROWIDTOCHAR(rowid)
Eksempel
Her er et eksempel:
SELECT ROWIDTOCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;
Resultat:
AAATiBAAMAAAAIDAAE
Resultatet af konverteringen er altid 18 tegn langt.
Og her er et dump af resultatet sammenlignet med CHARTOROWID()
funktion (som returnerer en ROWID
værdi fra tegndata):
SELECT
DUMP(CHARTOROWID('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "CHARTOROWID",
DUMP(ROWIDTOCHAR('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "ROWIDTOCHAR"
FROM DUAL;
Resultat:
CHARTOROWID ROWIDTOCHAR ____________________________ ________________________ Typ=69 Len=10: ^@,^A,8,81 Typ=1 Len=18: A,A,A,T
Et type-id på 69
betyder, at den er af ROWID
datatype og et type-id på 1
betyder, at det er enten VARCHAR2
eller NVARCHARCHAR2
.
Et databaseeksempel
Her er et eksempel, der returnerer en række i en databasetabel baseret på en given ROWID
:
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWIDTOCHAR(ROWID) LIKE '%KzABa';
Resultat:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
Nul-argument
Hvis argumentet er null
, resultatet er null
:
SET NULL 'null';
SELECT ROWIDTOCHAR(null)
FROM DUAL;
Resultat:
null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT
erklæring.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Ugyldigt argumentantal
Ringer til ROWIDTOCHAR()
uden argumenter resulterer i en fejl:
SELECT ROWIDTOCHAR()
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Og at sende for mange argumenter resulterer også i en fejl:
SELECT ROWIDTOCHAR('a', 'b')
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"