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

Výplň v SQL

Některé RDBMS poskytují LPAD() a RPAD() funkce, která nám umožňuje padat doleva nebo doprava na strunu. Některé funkce nám také umožňují přidávat počáteční nebo koncová čísla nul.

Níže jsou uvedeny příklady použití výplně SQL v některých populárnějších RDBMS.

Oracle

Oracle nám poskytuje LPAD() a RPAD() speciálně pro odsazení levé nebo pravé části řetězce:

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

Výsledek:

         LPAD('CAT',20) 
_______________________ 
                 Cat    

V tomto případě jsem použil LPAD() pro použití levého odsazení a výsledný řetězec má 20 znaků, protože to je to, co jsem použil pro druhý argument.

Výsledek je doplněn mezerou, protože to je výchozí znak používaný pro vyplnění. Pokud neurčíte, kterým znakem se má řetězec vyplnit, použije se mezera.

Můžete přidat třetí znak a určit, který znak se má použít pro výplň:

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

Výsledek:

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

V tomto případě jsem číslo doplnil nulami (i když výsledkem je řetězec).

Oracle má také TO_CHAR(number) funkce, kterou lze použít k přidání úvodních nul k číslu:

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

Výsledek:

007

0 formátovací prvek představuje každou číslici v původním čísle a nulu, pokud na této pozici v původním čísle žádná číslice neexistuje.

PostgreSQL

PostgreSQL má také svůj vlastní LPAD() a RPAD() funkce:

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

Výsledek:

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

A má také svůj vlastní TO_CHAR() funkce, která funguje podobně jako stejnojmenná funkce Oracle:

SELECT TO_CHAR(7, 'fm000');

Výsledek:

007

MariaDB

MariaDB má svůj vlastní LPAD() a RPAD() funkce:

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

Výsledek:

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

A zatímco MariaDB má svůj vlastní TO_CHAR() funkce, nepracuje s čísly (je omezena na hodnoty data a času).

MySQL

MySQL má také svůj vlastní LPAD() a RPAD() funkce.

Zde je příklad použití LPAD() proti sloupci databáze:

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

Výsledek:

+---------+----------------------+
| 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 je trochu anomálie v tom, že nemá LPAD() nebo RPAD() funkce.

SQL Server však má FORMAT() funkce, která nám umožňuje snadno doplňovat čísla úvodními nulami:

SELECT FORMAT(7, '000');

Výsledek:

007

Druhým argumentem je řetězec vlastního číselného formátu, který určuje, kolik znaků bude mít výsledný řetězec. Skutečnost, že jsem použil nuly, znamená, že výsledek bude mít v případě potřeby úvodní nuly.

K vyplnění řetězců na SQL Serveru můžeme udělat něco takového:

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

Výsledek:

....Cat

Existují různé další techniky, které můžeme použít pro aplikaci odsazení na SQL Server.


  1. Potřebuji načíst objekt MongoDB pouze pomocí položky filtrovaného pole

  2. MongoDB a Robomongo:Nelze se připojit (ověření)

  3. Je špatné změnit typ _id v MongoDB na celé číslo?

  4. Mongoose - Jak seskupit podle a naplnit?