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.