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

Preenchimento em SQL


Alguns RDBMSs fornecem um LPAD() e RPAD() função que nos permite pad esquerdo ou pad direito uma string. Algumas funções também nos permitem adicionar números de zeros à esquerda ou à direita.

Abaixo estão exemplos de aplicação de preenchimento SQL em alguns dos RDBMSs mais populares.

Oráculo


A Oracle nos fornece LPAD() e RPAD() especificamente para preencher a parte esquerda ou direita de uma string:
SELECT LPAD('Cat', 20)
FROM DUAL;

Resultado:
         LPAD('CAT',20) 
_______________________ 
                 Cat    

Neste caso eu usei LPAD() para aplicar o preenchimento esquerdo, e a string resultante é de 20 caracteres, porque foi isso que usei para o segundo argumento.

O resultado é preenchido por um espaço, porque esse é o caractere padrão usado para preenchimento. Se você não especificar com qual caractere preencher a string, um espaço será usado.

Você pode adicionar um terceiro caractere para especificar qual caractere usar para o preenchimento:
SELECT LPAD('7', 3, '0')
FROM DUAL;

Resultado:
   LPAD('7',3,'0') 
__________________ 
007               

Nesse caso, preenchi um número com zeros (embora o resultado seja uma string).

Oracle também tem um TO_CHAR(number) função que pode ser usada para adicionar zeros à esquerda a um número:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;

Resultado:
007

O 0 elemento de formato representa cada dígito no número original e zero se nenhum dígito existir nessa posição no número original.

PostgreSQL


PostgreSQL também tem seu próprio LPAD() e RPAD() funções:
SELECT 
    LPAD('7', 3, '0') AS "Left Padding",
    RPAD('7', 3, '0') AS "Right Padding",
    LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";

Resultado:
 Left Padding | Right Padding | Both  
--------------+---------------+-------
 007          | 700           | 00700

E também tem seu próprio TO_CHAR() função que funciona muito como a função do Oracle de mesmo nome:
SELECT TO_CHAR(7, 'fm000');

Resultado:
007

MariaDB


MariaDB tem seu próprio LPAD() e RPAD() funções:
SELECT 
    LPAD('7', 3, '0') AS "Left Padding",
    RPAD('7', 3, '0') AS "Right Padding",
    LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";

Resultado:
+--------------+---------------+-------+
| Left Padding | Right Padding | Both  |
+--------------+---------------+-------+
| 007          | 700           | 00700 |
+--------------+---------------+-------+

E enquanto o MariaDB tem seu próprio TO_CHAR() função, não funciona em números (é limitado a valores de data e hora).

MySQL


MySQL também tem seu próprio LPAD() e RPAD() funções.

Aqui está um exemplo de uso de LPAD() contra uma coluna do banco de dados:
SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;

Resultado:
+---------+----------------------+
| Genre   | LPAD(Genre, 10, '.') |
+---------+----------------------+
| Rock    | ......Rock           |
| Jazz    | ......Jazz           |
| Country | ...Country           |
| Pop     | .......Pop           |
| Blues   | .....Blues           |
| Hip Hop | ...Hip Hop           |
| Rap     | .......Rap           |
| Punk    | ......Punk           |
+---------+----------------------+

SQL Server


O SQL Server é uma anomalia, pois não possui um LPAD() ou RPAD() função.

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

Resultado:
007

O segundo argumento é uma string de formato numérico personalizado que determina quantos caracteres a string resultante terá. O fato de eu ter usado zeros significa que o resultado terá zeros à esquerda, se necessário.

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

Resultado:
....Cat

Existem várias outras técnicas que podemos usar para aplicar preenchimento no SQL Server.