sql >> Databáze >  >> NoSQL >> MongoDB

SQL LPAD()

V SQL LPAD() je běžně používaná funkce, která doplní levou část řetězce zadaným znakem. Funkci lze použít pro řetězce a čísla, i když v závislosti na DBMS může být nutné předat čísla jako řetězec, než je lze doplnit.

DBMS, které mají LPAD() funkce zahrnují MySQL, MariaDB, PostgreSQL a Oracle.

DBMS, které nedělají mít LPAD() funkce zahrnují SQL Server a SQLite (ačkoli existují jiné způsoby, jak v těchto DBMS použít výplň vlevo).

Příklad

Zde je příklad, který ukazuje, jak používat LPAD() ve vašem kódu SQL:

SELECT LPAD('Look Left', 20);

Výsledek:

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

V tomto příkladu je levá část řetězce doplněna mezerou (výchozí znak pro vyplnění) a výsledný řetězec je dlouhý 20 znaků (protože jsem zadal 20 jako druhý argument).

Oracle funguje stejně, ale musíme použít FROM DUAL když děláte dotaz, jako je tento (bez dotazu na skutečnou tabulku):

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

Výsledek:

    LPAD('LOOKLEFT',20) 
_______________________ 
           Look Left   

Určení znaku výplně

Polstrování nemusí být nutně prostorem. Volitelně můžeme přidat třetí argument, který specifikuje znak (nebo znaky), který se má použít v odsazení.

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

Výsledek:

007

V tomto případě jsem číslo doplnil nulami. Ve skutečnosti jsem v tomto příkladu předal číslo jako řetězec.

V některých systémech DBMS (jako je MariaDB a MySQL) můžeme číslo předat jako číslo a také jako číslo, kterým jej doplníme:

SELECT LPAD(7, 3, 0);

Výsledek:

007

Můžeme to udělat také v Oracle:

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

Výsledek:

007

Ale PostgreSQL má s tímto problém:

SELECT LPAD(7, 3, 0);

Výsledek:

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

SQL Server

SQL Server nemá LPAD() funkce, ale má FORMAT() funkce, která nám umožňuje doplnit čísla úvodními nulami:

SELECT FORMAT(7, '000');

Výsledek:

007

Funguje to tak, že předáme číslo a za ním formátovací řetězec. Ve výše uvedeném příkladu je formátovací řetězec 000 . Toto je řetězec vlastního číselného formátu, jehož výsledkem je doplnění původního čísla tak, aby výsledek sestával ze tří číslic. Pokud původní číslo již neobsahuje tři číslice, je doplněno nulami.

S řetězci levého bloku v SQL Serveru můžeme udělat něco takového:

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

Výsledek:

....Cat

V SQL Server je také několik dalších ekvivalentů LPAD().


  1. jak lze uložit Json v redis pomocí hashmap (HSET)

  2. Jak odkazovat na jiné schéma v mém schématu Mongoose?

  3. Migrace phpRedis do clusteru a konzistentní hashování

  4. Redis vs MongoDB