sql >> Base de Datos >  >> RDS >> Oracle

Función ROWIDTONCHAR() en Oracle

En Oracle Database, el ROWIDTONCHAR() función convierte un ROWID valor a NVARCHAR2 tipo de datos

Es similar a ROWIDTOCHAR() función, excepto que ROWIDTOCHAR() convierte un ROWID valor a VARCHAR2 tipo de datos.

Sintaxis

La sintaxis es así:

ROWIDTONCHAR(rowid)

Ejemplo

He aquí un ejemplo:

SELECT ROWIDTONCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Resultado:

AAATiBAAMAAAAIDAAE

El resultado de la conversión siempre está en el juego de caracteres nacional y tiene 18 caracteres.

Y aquí hay un volcado del resultado en comparación con CHARTOROWID() función (que devuelve un ROWID valor de datos de caracteres):

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

Resultado:

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

Un ID de tipo de 69 significa que es de ROWID tipo de datos y un ID de tipo de 1 significa que es VARCHAR2 o NVARCHARCHAR2 .

Un ejemplo de base de datos

Aquí hay un ejemplo que devuelve una fila en una tabla de base de datos, según un ROWID dado. :

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

Resultado:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Argumento nulo

Si el argumento es null , el resultado es null :

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

Resultado:

null

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que se produce un valor nulo como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Recuento de argumentos no válidos

Llamar a ROWIDTONCHAR() sin ningún argumento da como resultado un error:

SELECT ROWIDTONCHAR()
FROM DUAL;

Resultado:

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

Y pasar demasiados argumentos también da como resultado un error:

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

Resultado:

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