I Oracle Database, CHARTOROWID()
funktion konverterar ett strängvärde till ROWID
datatyp.
Syntax
Syntaxen ser ut så här:
CHARTOROWID(char)
Där char
är en av CHAR
, VARCHAR2
, NCHAR
, eller NVARCHAR2
datatyper.
Exempel
Här är ett exempel att visa:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Resultat:
AAATiDAAMAAALKzABa
Även om detta är ett snabbt och enkelt exempel, visar det oss inte att slutresultatet är av typen ROWID
.
Men vi kan ta reda på så här:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Resultat:
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
Här använde jag DUMP()
funktion för att få den interna representationen av de första fem tecknen.
Men viktigare är att den här funktionen också returnerar typ-ID. Den första är 96
, vilket är typ-ID för CHAR
och NCHAR
, och den andra är 69
, vilket är typ-ID för ROWID
.
Så detta visar att CHARTOROWID()
funktion konverterar faktiskt en sträng till en ROWID
.
Ett databasexempel
Här är ett exempel som returnerar en rad i en databastabell, baserat på en given ROWID
:
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Resultat:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
Ogiltig ROWID
Att skicka en ogiltig ROWID
resulterar i ett fel:
SELECT CHARTOROWID('oops')
FROM DUAL;
Resultat:
Error report - ORA-01410: invalid ROWID
Nollargument
Om argumentet är null
, resultatet är null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Resultat:
null
Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när ett nollvärde inträffar som ett resultat av en SQL SELECT
uttalande.
Du kan dock använda SET NULL
för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null
bör returneras.
Ogiltigt antal argument
Anropar CHARTOROWID()
utan några argument resulterar i ett fel:
SELECT CHARTOROWID()
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Och att skicka för många argument resulterar också i ett fel:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"