sql >> Databasteknik >  >> NoSQL >> MongoDB

SQL LPAD()

I SQL, LPAD() är en vanlig funktion som fyller den vänstra delen av en sträng med ett specificerat tecken. Funktionen kan användas på strängar och siffror, men beroende på DBMS kan siffror behöva skickas som en sträng innan de kan utfyllas.

DBMS som har en LPAD() funktioner inkluderar MySQL, MariaDB, PostgreSQL och Oracle.

DBMS som inte gör det har en LPAD() funktioner inkluderar SQL Server och SQLite (även om det finns andra sätt att tillämpa vänster utfyllnad i dessa DBMS).

Exempel

Här är ett exempel för att visa hur man använder LPAD() i din SQL-kod:

SELECT LPAD('Look Left', 20);

Resultat:

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

I det här exemplet är den vänstra delen av strängen utfylld med ett mellanslag (standard utfyllnadstecken), och den resulterande strängen är 20 tecken lång (eftersom jag angav 20 som det andra argumentet).

Oracle fungerar på samma sätt, men vi måste använda FROM DUAL när du gör en fråga som denna (utan att fråga en faktisk tabell):

SELECT LPAD('Look Left', 20) 
FROM DUAL;

Resultat:

    LPAD('LOOKLEFT',20) 
_______________________ 
           Look Left   

Ange en utfyllnadstecken

Vadderingen behöver inte nödvändigtvis vara ett mellanslag. Vi kan valfritt lägga till ett tredje argument för att specificera tecknet (eller tecknen) som ska användas i utfyllnaden.

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

Resultat:

007

I det här fallet fyllde jag ut ett nummer med nollor. Jag skickade faktiskt numret som en sträng i det här exemplet.

I vissa DBMS:er (som MariaDB och MySQL) kan vi skicka numret som ett nummer, såväl som numret att fylla det med:

SELECT LPAD(7, 3, 0);

Resultat:

007

Vi kan också göra detta i Oracle:

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

Resultat:

007

Men PostgreSQL har ett problem med detta:

SELECT LPAD(7, 3, 0);

Resultat:

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

SQL-server

SQL Server har ingen LPAD() funktion, men den har en FORMAT() funktion som låter oss fylla på siffror med inledande nollor:

SELECT FORMAT(7, '000');

Resultat:

007

Så det fungerar är att vi skickar numret, följt av en formatsträng. I exemplet ovan är formatsträngen 000 . Detta är en sträng med anpassat numeriskt format som resulterar i att det ursprungliga numret utfylls så att resultatet består av tre siffror. Om det inte redan finns tre siffror i det ursprungliga numret är det utfyllt med nollor.

Till vänster pad-strängar i SQL Server kan vi göra något så här:

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

Resultat:

....Cat

Det finns också ett par andra LPAD()-ekvivalenter i SQL Server.


  1. Tips för att uppgradera till den senaste MongoDB-versionen

  2. MongoDB $orderBy

  3. MongoDB på Android

  4. gradle bygga lokala verk. I dockercontainer gör det inte det. VARFÖR?