In Oracle Database, de ROWIDTONCHAR()
functie converteert een ROWID
waarde naar NVARCHAR2
gegevenstype
Het is vergelijkbaar met de ROWIDTOCHAR()
functie, behalve dat ROWIDTOCHAR()
converteert een ROWID
waarde naar VARCHAR2
gegevenstype.
Syntaxis
De syntaxis gaat als volgt:
ROWIDTONCHAR(rowid)
Voorbeeld
Hier is een voorbeeld:
SELECT ROWIDTONCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;
Resultaat:
AAATiBAAMAAAAIDAAE
Het resultaat van de conversie is altijd in de nationale tekenset en is 18 tekens lang.
En hier is een dump van het resultaat vergeleken met de CHARTOROWID()
functie (die een ROWID
retourneert waarde uit karaktergegevens):
SELECT
DUMP(CHARTOROWID('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "CHARTOROWID",
DUMP(ROWIDTONCHAR('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "ROWIDTONCHAR"
FROM DUAL;
Resultaat:
CHARTOROWID ROWIDTONCHAR ____________________________ __________________________ Typ=69 Len=10: ^@,^A,8,81 Typ=1 Len=36: ^@,A,^@,A
Een type-ID van 69
betekent dat het van ROWID
. is gegevenstype en een type-ID van 1
betekent dat het ofwel VARCHAR2
. is of NVARCHARCHAR2
.
Een databasevoorbeeld
Hier is een voorbeeld dat een rij retourneert in een databasetabel, gebaseerd op een gegeven ROWID
:
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWIDTONCHAR(ROWID) LIKE '%KzABa';
Resultaat:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
Nullargument
Als het argument null
is , het resultaat is null
:
SET NULL 'null';
SELECT ROWIDTONCHAR(null)
FROM DUAL;
Resultaat:
null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer een null-waarde optreedt als resultaat van een SQL SELECT
verklaring.
U kunt echter SET NULL
gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Ongeldig aantal argumenten
Bellen ROWIDTONCHAR()
zonder argumenten resulteert in een fout:
SELECT ROWIDTONCHAR()
FROM DUAL;
Resultaat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
En het doorgeven van te veel argumenten resulteert ook in een fout:
SELECT ROWIDTONCHAR('a', 'b')
FROM DUAL;
Resultaat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"