Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction ROWIDTOCHAR() dans Oracle

Dans Oracle Database, le ROWIDTOCHAR() la fonction convertit un ROWID valeur à VARCHAR2 type de données.

Syntaxe

La syntaxe ressemble à ceci :

ROWIDTOCHAR(rowid)

Exemple

Voici un exemple :

SELECT ROWIDTOCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Résultat :

AAATiBAAMAAAAIDAAE

Le résultat de la conversion fait toujours 18 caractères.

Et voici un vidage du résultat par rapport au CHARTOROWID() fonction (qui retourne un ROWID valeur à partir des données de caractères):

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

Résultat :

                 CHARTOROWID              ROWIDTOCHAR 
____________________________ ________________________ 
Typ=69 Len=10: ^@,^A,8,81    Typ=1 Len=18: A,A,A,T   

Un identifiant de type 69 signifie qu'il s'agit de ROWID type de données et un ID de type de 1 signifie qu'il s'agit de soit VARCHAR2 ou NVARCHARCHAR2 .

Un exemple de base de données

Voici un exemple qui renvoie une ligne dans une table de base de données, basée sur un ROWID donné :

SELECT 
    ROWID,
    FIRST_NAME,
    LAST_NAME
FROM EMPLOYEES
WHERE ROWIDTOCHAR(ROWID) LIKE '%KzABa';

Résultat :

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Argument nul

Si l'argument est null , le résultat est null :

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

Résultat :

null

Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois qu'une valeur nulle se produit à la suite d'un SELECT SQL déclaration.

Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.

Nombre d'arguments non valides

Appelant ROWIDTOCHAR() sans aucun argument génère une erreur :

SELECT ROWIDTOCHAR()
FROM DUAL;

Résultat :

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

Et passer trop d'arguments entraîne également une erreur :

SELECT ROWIDTOCHAR('a', 'b')
FROM DUAL;

Résultat :

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