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

CHARTOROWID() Funktion i Oracle

I Oracle Database er CHARTOROWID() funktion konverterer en strengværdi til ROWID datatype.

Syntaks

Syntaksen ser sådan ud:

CHARTOROWID(char)

Hvor char er en af ​​CHAR , VARCHAR2 , NCHAR eller NVARCHAR2 datatyper.

Eksempel

Her er et eksempel til demonstration:

SELECT 
    CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;

Resultat:

AAATiDAAMAAALKzABa

Selvom dette er et hurtigt og nemt eksempel, viser det os ikke, at slutresultatet er af typen ROWID .

Vi kan dog finde ud af det sådan her:

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   

Her brugte jeg DUMP() funktion for at få den interne repræsentation af de første fem tegn.

Men vigtigst af alt, denne funktion returnerer også type-id'et. Den første er 96 , som er type-id'et for CHAR og NCHAR , og den anden er 69 , som er type-id'et for ROWID .

Så dette viser, at CHARTOROWID() funktion konverterer faktisk en streng til en ROWID .

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 ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');

Resultat:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Ugyldig ROWID

Videregivelse af en ugyldig ROWID resulterer i en fejl:

SELECT CHARTOROWID('oops')
FROM DUAL;

Resultat:

Error report -
ORA-01410: invalid ROWID

Nul-argument

Hvis argumentet er null , resultatet er null :

SET NULL 'null';
SELECT CHARTOROWID(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 CHARTOROWID() uden nogen argumenter resulterer i en fejl:

SELECT CHARTOROWID()
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 CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;

Resultat:

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

  1. SQL Server:ækvivalent drop tabel kaskade?

  2. Android-rum - Sådan rydder du sqlite_sequence for alle tabeller

  3. SQL Server CRUD Operationer

  4. SQLite JSON_GROUP_ARRAY()