En Oracle, el LPAD()
La función le permite rellenar la parte izquierda de una cadena con un cierto carácter, 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í:
LPAD(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 izquierda 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 LPAD('Cat', 5)
FROM DUAL;
Resultado:
LPAD('CAT',5) ________________ Cat
Tenga en cuenta que el número proporcionado es el ancho total de la cadena resultante:no la cantidad de relleno.
Aquí está nuevamente en comparación con la cadena original (sin relleno):
SELECT LPAD('Cat', 5)
FROM DUAL
UNION ALL
SELECT 'Cat'
FROM DUAL;
Resultado:
LPAD('CAT',5) ________________ Cat Cat
Especifique un carácter
En este ejemplo, especifico un carácter para usar como relleno:
SELECT LPAD('Cat', 5, '>')
FROM DUAL;
Resultado:
LPAD('CAT',5,'>') ____________________ >>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 LPAD('Cat', 2)
FROM DUAL;
Resultado:
LPAD('CAT',2) ________________ Ca
Ejemplo de base de datos
Este es un ejemplo de cómo rellenar la parte izquierda de los valores en una columna de base de datos:
SELECT
country_name,
LPAD(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
LPAD(null, 3),
LPAD('Cat', null),
LPAD('Cat', 3, null)
FROM DUAL;
Resultado:
LPAD(NULL,3) LPAD('CAT',NULL) LPAD('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 LPAD()
sin pasar ningún argumento devuelve un error:
SELECT LPAD()
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT LPAD() 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 LPAD('Cat', 1, '>', 2)
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT LPAD('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: