En Oracle, el RPAD()
La función le permite rellenar la parte derecha de una cadena con un carácter determinado, hasta un número específico de caracteres.
La forma en que funciona es que usted especifica qué tan larga debe ser la cadena resultante. Si la cadena original es más corta, el carácter de relleno llena el espacio restante.
Sintaxis
La sintaxis es así:
RPAD(expr1 , n [, expr2 ])
Dónde:
expr1
yexpr2
puede ser cualquiera de los tipos de datosCHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
oNCLOB
.n
es unNUMBER
entero o un valor que se puede convertir implícitamente en unNUMBER
entero.
La función devuelve expr1
, con relleno a la derecha hasta la longitud n
caracteres con la secuencia de caracteres en expr2
.
Si expr2
se omite, el carácter de relleno es un solo espacio en blanco.
Ejemplo
Aquí hay un ejemplo simple para demostrarlo:
SELECT RPAD('Cat', 25)
FROM DUAL;
Resultado:
RPAD('CAT',25) ____________________________ Cat
No es fácil ver el efecto de este ejemplo, porque rellenamos la cadena con el carácter predeterminado (un espacio), pero tuvo el efecto de desplazar el ancho de la columna.
A continuación se muestra otro ejemplo que demuestra mejor el efecto:
SELECT RPAD('Cat', 15) || 'House'
FROM DUAL;
Resultado:
RPAD('CAT',15)||'HOUSE' __________________________ Cat House
La concatenación de las dos cadenas revela la cantidad de relleno que se aplicó a la parte derecha de la cadena más a la izquierda.
Tenga en cuenta que el número proporcionado es el ancho total de la cadena resultante:no la cantidad de relleno.
Especifique un carácter
En este ejemplo, especifico un carácter para usar como relleno:
SELECT RPAD('Cat', 7, '!')
FROM DUAL;
Resultado:
RPAD('CAT',7,'!') ____________________ Cat!!!!
Relleno más pequeño que la cadena original
Si el segundo argumento es menor que la cadena original, no se agrega relleno y la cadena original se acorta al número de caracteres especificado:
SELECT RPAD('Cat', 2)
FROM DUAL;
Resultado:
RPAD('CAT',2) ________________ Ca
Ejemplo de base de datos
Aquí hay un ejemplo de cómo rellenar la parte derecha de los valores en una columna de base de datos:
SELECT
country_name,
RPAD(country_name, 12, '.') AS Padded
FROM countries
FETCH FIRST 5 ROWS ONLY;
Resultado:
COUNTRY_NAME PADDED _______________ _______________ Argentina Argentina... Australia Australia... Belgium Belgium..... Brazil Brazil...... Canada Canada......
Valores nulos
Si alguno de los argumentos es null
el resultado es null
:
SET NULL 'null';
SELECT
RPAD(null, 3),
RPAD('Cat', null),
RPAD('Cat', 3, null)
FROM DUAL;
Resultado:
RPAD(NULL,3) RPAD('CAT',NULL) RPAD('CAT',3,NULL) _______________ ___________________ _____________________ null null null
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null
ocurre 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 incorrecto
Llamando a RPAD()
sin pasar ningún argumento devuelve un error:
SELECT RPAD()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT RPAD() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Y pasar el número incorrecto de argumentos da como resultado un error:
SELECT RPAD('Cat', 1, '>', 2)
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT RPAD('Cat', 1, '>', 2) FROM DUAL Error at Command Line : 1 Column : 28 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: