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

Función LPAD() en Oracle

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 y expr2 puede ser cualquiera de los tipos de datos CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB o NCLOB .
  • n es un NUMBER entero o un valor que se puede convertir implícitamente en un NUMBER 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: