sql >> Database >  >> RDS >> Oracle

CHARTOROWID() Functie in Oracle

In Oracle Database, de CHARTOROWID() functie converteert een tekenreekswaarde naar ROWID gegevenstype.

Syntaxis

De syntaxis gaat als volgt:

CHARTOROWID(char)

Waar char is een van CHAR , VARCHAR2 , NCHAR , of NVARCHAR2 gegevenstypen.

Voorbeeld

Hier is een voorbeeld om te demonstreren:

SELECT 
    CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;

Resultaat:

AAATiDAAMAAALKzABa

Hoewel dit een snel en eenvoudig voorbeeld is, laat het ons niet zien dat het eindresultaat van het type ROWID is. .

We kunnen er echter als volgt achter komen:

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

Resultaat:

                         r1                              r2 
___________________________ _______________________________ 
Typ=96 Len=18: A,A,A,T,i    Typ=69 Len=10: ^@,^A,8,83,^C   

Hier gebruikte ik de DUMP() functie om de interne representatie van de eerste vijf tekens te krijgen.

Maar belangrijker is dat deze functie ook het type ID retourneert. De eerste is 96 , wat het type ID is voor CHAR en NCHAR , en de tweede is 69 , wat het type ID is voor ROWID .

Dit toont dus aan dat de CHARTOROWID() functie converteert in feite een string naar een ROWID .

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

Resultaat:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Ongeldige ROWID

Een ongeldige ROWID doorgeven resulteert in een fout:

SELECT CHARTOROWID('oops')
FROM DUAL;

Resultaat:

Error report -
ORA-01410: invalid ROWID

Nullargument

Als het argument null is , het resultaat is null :

SET NULL 'null';
SELECT CHARTOROWID(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

Belt CHARTOROWID() zonder argumenten resulteert in een fout:

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

Resultaat:

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

  1. SQL-query om het N-de hoogste salaris uit een salaristabel te vinden

  2. NextForm v3:vijf opties voor gegevens- en databasemigratie

  3. Een database handmatig comprimeren en repareren in Access 2016

  4. Slaapstand-annotatie voor PostgreSQL-serieel type