En SQL, LPAD()
es una función de uso común que rellena la parte izquierda de una cadena con un carácter específico. La función se puede usar en cadenas y números, aunque dependiendo del DBMS, es posible que los números deban pasarse como una cadena antes de que se puedan rellenar.
DBMS que tienen un LPAD()
incluyen MySQL, MariaDB, PostgreSQL y Oracle.
DBMS que no tener un LPAD()
La función incluye SQL Server y SQLite (aunque hay otras formas de aplicar el relleno izquierdo en estos DBMS).
Ejemplo
Aquí hay un ejemplo para demostrar cómo usar LPAD()
en su código SQL:
SELECT LPAD('Look Left', 20);
Resultado:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
En este ejemplo, la parte izquierda de la cadena se rellena con un espacio (el carácter de relleno predeterminado) y la cadena resultante tiene 20 caracteres (porque especifiqué 20
como segundo argumento).
Oracle funciona igual, pero necesitamos usar FROM DUAL
al hacer una consulta como esta (sin consultar una tabla real):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Resultado:
LPAD('LOOKLEFT',20) _______________________ Look Left
Especifique un carácter de relleno
El relleno no necesariamente tiene que ser un espacio. Opcionalmente, podemos agregar un tercer argumento para especificar el carácter (o caracteres) que se usará en el relleno.
SELECT LPAD('7', 3, '0');
Resultado:
007
En este caso, rellené un número con ceros. De hecho, pasé el número como una cadena en este ejemplo.
En algunos DBMS (como MariaDB y MySQL) podemos pasar el número como un número, así como el número para rellenarlo con:
SELECT LPAD(7, 3, 0);
Resultado:
007
También podemos hacer esto en Oracle:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Resultado:
007
Pero PostgreSQL tiene un problema con esto:
SELECT LPAD(7, 3, 0);
Resultado:
ERROR: function lpad(integer, integer, integer) does not exist
Servidor SQL
SQL Server no tiene un LPAD()
función, pero tiene un FORMAT()
función que nos permite rellenar números con ceros a la izquierda:
SELECT FORMAT(7, '000');
Resultado:
007
La forma en que funciona es que pasamos el número, seguido de una cadena de formato. En el ejemplo anterior, la cadena de formato es 000
. Esta es una cadena de formato numérico personalizado que da como resultado que el número original se rellene para que el resultado consista en tres dígitos. Si aún no hay tres dígitos en el número original, entonces se rellena con ceros.
Para rellenar cadenas a la izquierda en SQL Server, podemos hacer algo como esto:
SELECT RIGHT('.......' + 'Cat', 7);
Resultado:
....Cat
También hay un par de otros equivalentes de LPAD() en SQL Server.