sql >> Databasteknik >  >> RDS >> Oracle

CHARTOROWID() Funktion i Oracle

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"

  1. SQL HAVING-klausul för nybörjare

  2. Ogiltigt standardvärde för "dateAdded"

  3. Vikten av varchar-längd i MySQL-tabellen

  4. CTE Rekursion för att få trädhierarki