sql >> Databasteknik >  >> RDS >> Oracle

ROWIDTONCHAR() Funktion i Oracle

I Oracle Database, ROWIDTONCHAR() funktion konverterar en ROWID värde till NVARCHAR2 datatyp

Det liknar ROWIDTOCHAR() funktion, förutom att ROWIDTOCHAR() konverterar en ROWID värde till VARCHAR2 datatyp.

Syntax

Syntaxen ser ut så här:

ROWIDTONCHAR(rowid)

Exempel

Här är ett exempel:

SELECT ROWIDTONCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Resultat:

AAATiBAAMAAAAIDAAE

Resultatet av konverteringen finns alltid i den nationella teckenuppsättningen och är 18 tecken långt.

Och här är en dump av resultatet jämfört med CHARTOROWID() funktion (som returnerar en ROWID värde från teckendata):

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

Resultat:

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

Ett typ-ID på 69 betyder att den är av ROWID datatyp och ett typ-ID på 1 betyder att det antingen är VARCHAR2 eller NVARCHARCHAR2 .

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

Resultat:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Nollargument

Om argumentet är null , resultatet är null :

SET NULL 'null';
SELECT ROWIDTONCHAR(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 ROWIDTONCHAR() utan några argument resulterar i ett fel:

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

Resultat:

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

  1. importera redan skapad SQLite-databas (xamarin)

  2. Skapa en schemabunden UDF i SQL Server

  3. Hur infogar man en post med bara standardvärden?

  4. Hur återställer jag postgresql 9.2 standardanvändarlösenordet (vanligtvis 'postgres') på mac os x 10.8.2?