sql >> Database >  >> RDS >> Oracle

ROWIDTONCHAR() Functie in Oracle

In Oracle Database, de ROWIDTONCHAR() functie converteert een ROWID waarde naar NVARCHAR2 gegevenstype

Het is vergelijkbaar met de ROWIDTOCHAR() functie, behalve dat ROWIDTOCHAR() converteert een ROWID waarde naar VARCHAR2 gegevenstype.

Syntaxis

De syntaxis gaat als volgt:

ROWIDTONCHAR(rowid)

Voorbeeld

Hier is een voorbeeld:

SELECT ROWIDTONCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Resultaat:

AAATiBAAMAAAAIDAAE

Het resultaat van de conversie is altijd in de nationale tekenset en is 18 tekens lang.

En hier is een dump van het resultaat vergeleken met de CHARTOROWID() functie (die een ROWID retourneert waarde uit karaktergegevens):

SELECT 
    DUMP(CHARTOROWID('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "CHARTOROWID",
    DUMP(ROWIDTONCHAR('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "ROWIDTONCHAR"
FROM DUAL;

Resultaat:

                 CHARTOROWID               ROWIDTONCHAR 
____________________________ __________________________ 
Typ=69 Len=10: ^@,^A,8,81    Typ=1 Len=36: ^@,A,^@,A   

Een type-ID van 69 betekent dat het van ROWID . is gegevenstype en een type-ID van 1 betekent dat het ofwel VARCHAR2 . is of NVARCHARCHAR2 .

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 ROWIDTONCHAR(ROWID) LIKE '%KzABa';

Resultaat:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Nullargument

Als het argument null is , het resultaat is null :

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

Bellen ROWIDTONCHAR() zonder argumenten resulteert in een fout:

SELECT ROWIDTONCHAR()
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 ROWIDTONCHAR('a', 'b')
FROM DUAL;

Resultaat:

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

  1. Een logging-handler maken om verbinding te maken met Oracle?

  2. PL/SQL-gateway in R11i

  3. Postgresql extract laatste rij voor elke id

  4. Hoe te repareren "ALTER TABLE SWITCH-instructie mislukt" Msg 4982 (SQL Server)