sql >> Databáze >  >> RDS >> Oracle

Funkce CHARTOROWID() v Oracle

V databázi Oracle je to CHARTOROWID() funkce převede hodnotu řetězce na ROWID datový typ.

Syntaxe

Syntaxe vypadá takto:

CHARTOROWID(char) 

Kde char je jedním z CHAR , VARCHAR2 , NCHAR nebo NVARCHAR2 datové typy.

Příklad

Zde je příklad k demonstraci:

SELECT 
    CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL; 

Výsledek:

AAATiDAAMAAALKzABa

Ačkoli se jedná o rychlý a snadný příklad, neukazuje nám, že konečný výsledek je typu ROWID .

Můžeme to však zjistit takto:

SELECT 
    DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
    DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL; 

Výsledek:

 r1 r2 ____________________________ _______________________________ Typ=96 Len=18:A,A,A,T,i Typ=69, ^ C,
 Zde jsem použil DUMP() funkcí získat vnitřní reprezentaci prvních pěti znaků. 

Ale co je důležité, tato funkce také vrací ID typu. První je 96 , což je ID typu pro CHAR a NCHAR a druhý je 69 , což je ID typu pro ROWID .

Takže to ukazuje, že CHARTOROWID() Funkce ve skutečnosti převádí řetězec na ROWID .

Příklad databáze

Zde je příklad, který vrací řádek v databázové tabulce na základě daného ROWID :

SELECT 
    ROWID,
    FIRST_NAME,
    LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa'); 

Výsledek:

 ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates 

Neplatný ROWID

Předávání neplatného ROWID výsledkem je chyba:

SELECT CHARTOROWID('oops')
FROM DUAL; 

Výsledek:

Chybové hlášení -ORA-01410:neplatný ROWID

Nulový argument

Pokud je argument null , výsledkem je null :

SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL; 

Výsledek:

null

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo, kdykoli se v důsledku příkazu SQL SELECT objeví hodnota null prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Neplatný počet argumentů

Volání CHARTOROWID() bez jakýchkoli argumentů vede k chybě:

SELECT CHARTOROWID()
FROM DUAL; 

Výsledek:

Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"

A předání příliš mnoha argumentů také vede k chybě:

SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL; 

Výsledek:

Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"

  1. SQL Server Collection Inventory Script -1

  2. Kdy použít MongoDB nebo jiné databázové systémy orientované na dokumenty?

  3. Co je nového v MariaDB Cluster 10.4

  4. Platné formáty časových řetězců pro funkce data/času SQLite