sql >> Database >  >> NoSQL >> MongoDB

Opvulling in SQL

Sommige RDBMS'en bieden een LPAD() en RPAD() functie die ons in staat stelt om een ​​snaar op de linker- of rechterpad te gebruiken. Sommige functies stellen ons ook in staat om voorloop- of volgnullen toe te voegen.

Hieronder staan ​​voorbeelden van het toepassen van SQL-opvulling in enkele van de meer populaire RDBMS'en.

Oracle

Oracle biedt ons LPAD() en RPAD() specifiek voor het opvullen van het linker- of rechtergedeelte van een tekenreeks:

SELECT LPAD('Cat', 20)
FROM DUAL;

Resultaat:

         LPAD('CAT',20) 
_______________________ 
                 Cat    

In dit geval gebruikte ik LPAD() om linkerpadding toe te passen, en de resulterende tekenreeks is 20 tekens, want dat is wat ik voor het tweede argument heb gebruikt.

Het resultaat wordt opgevuld door een spatie, want dat is het standaardteken dat wordt gebruikt voor opvulling. Als u niet opgeeft met welk teken de tekenreeks moet worden ingevuld, wordt een spatie gebruikt.

U kunt een derde teken toevoegen om aan te geven welk teken voor de opvulling moet worden gebruikt:

SELECT LPAD('7', 3, '0')
FROM DUAL;

Resultaat:

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

In dit geval vulde ik een getal in met nullen (hoewel het resultaat een string is).

Oracle heeft ook een TO_CHAR(number) functie die kan worden gebruikt om voorloopnullen aan een getal toe te voegen:

SELECT TO_CHAR(7, 'fm000')
FROM DUAL;

Resultaat:

007

De 0 formaatelement vertegenwoordigt elk cijfer in het oorspronkelijke nummer, en nul als er geen cijfer bestaat op die positie in het oorspronkelijke nummer.

PostgreSQL

PostgreSQL heeft ook zijn eigen LPAD() en RPAD() functies:

SELECT 
    LPAD('7', 3, '0') AS "Left Padding",
    RPAD('7', 3, '0') AS "Right Padding",
    LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";

Resultaat:

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

En het heeft ook zijn eigen TO_CHAR() functie die veel lijkt op de gelijknamige functie van Oracle:

SELECT TO_CHAR(7, 'fm000');

Resultaat:

007

MariaDB

MariaDB heeft zijn eigen LPAD() en RPAD() functies:

SELECT 
    LPAD('7', 3, '0') AS "Left Padding",
    RPAD('7', 3, '0') AS "Right Padding",
    LPAD(RPAD('7', 3, '0'), 5, '0') AS "Both";

Resultaat:

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

En hoewel MariaDB zijn eigen TO_CHAR() . heeft functie, werkt het niet op getallen (het is beperkt tot datetime-waarden).

MySQL

MySQL heeft ook zijn eigen LPAD() en RPAD() functies.

Hier is een voorbeeld van het gebruik van LPAD() tegen een databasekolom:

SELECT Genre, LPAD(Genre, 10, '.')
FROM Genres;

Resultaat:

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

SQL-server

SQL Server is een beetje een anomalie omdat het geen LPAD() heeft of RPAD() functie.

SQL Server heeft echter wel een FORMAT() functie waarmee we gemakkelijk getallen met voorloopnullen kunnen invullen:

SELECT FORMAT(7, '000');

Resultaat:

007

Het tweede argument is een aangepaste tekenreeks voor numerieke opmaak die bepaalt hoeveel tekens de resulterende tekenreeks zal hebben. Het feit dat ik nullen heb gebruikt, betekent dat het resultaat indien nodig voorloopnullen zal hebben.

Om strings in SQL Server op te vullen, kunnen we zoiets als dit doen:

SELECT RIGHT('.......' + 'Cat', 7);

Resultaat:

....Cat

Er zijn verschillende andere technieken die we kunnen gebruiken voor het toepassen van opvulling in SQL Server.


  1. MongoServer.State-equivalent in de 2.0-driver

  2. Hernoem ObjectId _id naar id in Jackson deserialisatie met Jongo en MongoDB

  3. Hoe SELinux te configureren voor MongoDB Replica Sets

  4. Hoe Redis-datum in R . te converteren