MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

SQL LPAD()


Em SQL, LPAD() é uma função comumente usada que preenche a parte esquerda de uma string com um caractere especificado. A função pode ser usada em strings e números, embora dependendo do DBMS, os números podem ter que ser passados ​​como uma string antes de serem preenchidos.

DBMSs que possuem um LPAD() incluem MySQL, MariaDB, PostgreSQL e Oracle.

SGBDs que não tem um LPAD() incluem SQL Server e SQLite (embora existam outras maneiras de aplicar preenchimento esquerdo nesses DBMSs).

Exemplo


Aqui está um exemplo para demonstrar como usar LPAD() em seu código SQL:
SELECT LPAD('Look Left', 20);

Resultado:
+-----------------------+
| LPAD('Look Left', 20) |
+-----------------------+
|            Look Left  |
+-----------------------+

Neste exemplo, a parte esquerda da string é preenchida com um espaço (o caractere de preenchimento padrão) e a string resultante tem 20 caracteres (porque eu especifiquei 20 como segundo argumento).

Oracle funciona da mesma forma, mas precisamos usar FROM DUAL ao fazer uma consulta como esta (sem consultar uma tabela real):
SELECT LPAD('Look Left', 20) 
FROM DUAL;

Resultado:
    LPAD('LOOKLEFT',20) 
_______________________ 
           Look Left   

Especifique um caractere de preenchimento


O preenchimento não precisa necessariamente ser um espaço. Opcionalmente, podemos adicionar um terceiro argumento para especificar o caractere (ou caracteres) a ser usado no preenchimento.
SELECT LPAD('7', 3, '0');

Resultado:
007

Neste caso, preenchi um número com zeros. Na verdade, eu passei o número como uma string neste exemplo.

Em alguns SGBDs (como MariaDB e MySQL) podemos passar o número como um número, assim como o número para preenchê-lo:
SELECT LPAD(7, 3, 0);

Resultado:
007

Também podemos fazer isso no Oracle:
SELECT LPAD(7, 3, 0) 
FROM DUAL;

Resultado:
007

Mas o PostgreSQL tem um problema com isso:
SELECT LPAD(7, 3, 0);

Resultado:
ERROR:  function lpad(integer, integer, integer) does not exist

SQL Server


SQL Server não tem um LPAD() função, mas tem um FORMAT() função que nos permite preencher números com zeros à esquerda:
SELECT FORMAT(7, '000');

Resultado:
007

A forma como funciona é que passamos o número, seguido por uma string de formato. No exemplo acima, a string de formato é 000 . Esta é uma cadeia de caracteres de formato numérico personalizado que resulta no preenchimento do número original para que o resultado consista em três dígitos. Se ainda não houver três dígitos no número original, ele será preenchido com zeros.

Para strings de teclado esquerdo no SQL Server, podemos fazer algo assim:
SELECT RIGHT('.......' + 'Cat', 7);

Resultado:
....Cat

Há também alguns outros equivalentes LPAD() no SQL Server.