sql >> Database teknologi >  >> NoSQL >> MongoDB

SQL LPAD()

I SQL, LPAD() er en almindeligt brugt funktion, der udfylder den venstre del af en streng med et specificeret tegn. Funktionen kan bruges på strenge og tal, men afhængigt af DBMS skal tal muligvis sendes som en streng, før de kan udfyldes.

DBMS'er, der har en LPAD() funktioner omfatter MySQL, MariaDB, PostgreSQL og Oracle.

DBMS'er, der ikke har en LPAD() funktion omfatter SQL Server og SQLite (selvom der er andre måder at anvende venstre polstring på i disse DBMS'er).

Eksempel

Her er et eksempel for at demonstrere, hvordan man bruger LPAD() i din SQL-kode:

SELECT LPAD('Look Left', 20);

Resultat:

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

I dette eksempel er den venstre del af strengen udfyldt med et mellemrum (standard udfyldningstegn), og den resulterende streng er 20 tegn lang (fordi jeg har angivet 20 som det andet argument).

Oracle fungerer på samme måde, men vi skal bruge FROM DUAL når du laver en forespørgsel som denne (uden at forespørge en egentlig tabel):

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

Resultat:

    LPAD('LOOKLEFT',20) 
_______________________ 
           Look Left   

Angiv et udfyldningstegn

Polstringen behøver ikke nødvendigvis at være et mellemrum. Vi kan eventuelt tilføje et tredje argument for at specificere tegnet (eller tegnene), der skal bruges i udfyldningen.

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

Resultat:

007

I dette tilfælde udfyldte jeg et tal med nuller. Faktisk sendte jeg nummeret som en streng i dette eksempel.

I nogle DBMS'er (såsom MariaDB og MySQL) kan vi videregive nummeret som et tal, såvel som nummeret, det skal fyldes med:

SELECT LPAD(7, 3, 0);

Resultat:

007

Vi kan også gøre dette i Oracle:

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

Resultat:

007

Men PostgreSQL har et problem med dette:

SELECT LPAD(7, 3, 0);

Resultat:

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

SQL-server

SQL Server har ikke en LPAD() funktion, men den har en FORMAT() funktion, der giver os mulighed for at udfylde tal med indledende nuller:

SELECT FORMAT(7, '000');

Resultat:

007

Måden det fungerer på er, at vi sender nummeret efterfulgt af en formatstreng. I ovenstående eksempel er formatstrengen 000 . Dette er en streng med tilpasset numerisk format, der resulterer i, at det originale nummer udfyldes, så resultatet består af tre cifre. Hvis der ikke allerede er tre cifre i det oprindelige nummer, så er det polstret med nuller.

Til venstre pad strenge i SQL Server, kan vi gøre noget som dette:

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

Resultat:

....Cat

Der er også et par andre LPAD()-ækvivalenter i SQL Server.


  1. Hvordan gemmer man kun én database i Redis?

  2. mongo - rubin forbindelsesproblem

  3. Hvordan slipper jeg en MongoDB-database fra kommandolinjen?

  4. Bedste Session Storage Middleware til Express + MongoDB