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

Padding i SQL

Nogle RDBMS'er giver en LPAD() og RPAD() funktion, der gør det muligt for os at venstre pad eller højre pad en streng. Nogle funktioner giver os også mulighed for at tilføje indledende eller efterfølgende nuller.

Nedenfor er eksempler på anvendelse af SQL-padding i nogle af de mere populære RDBMS'er.

Oracle

Oracle giver os LPAD() og RPAD() specifikt til udfyldning af enten venstre eller højre del af en streng:

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

Resultat:

         LPAD('CAT',20) 
_______________________ 
                 Cat    

I dette tilfælde brugte jeg LPAD() at anvende venstre polstring, og den resulterende streng er på 20 tegn, fordi det er det, jeg brugte til det andet argument.

Resultatet udfyldes med et mellemrum, fordi det er standardtegn, der bruges til udfyldning. Hvis du ikke angiver, hvilket tegn strengen skal udfyldes med, bruges et mellemrum.

Du kan tilføje et tredje tegn for at angive, hvilket tegn der skal bruges til udfyldningen:

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

Resultat:

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

I dette tilfælde udfyldte jeg et tal med nuller (selvom resultatet er en streng).

Oracle har også en TO_CHAR(number) funktion, der kan bruges til at tilføje indledende nuller til et tal:

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

Resultat:

007

0 formatelement repræsenterer hvert ciffer i det oprindelige nummer og nul, hvis der ikke findes et ciffer på den position i det oprindelige nummer.

PostgreSQL

PostgreSQL har også sin egen LPAD() og RPAD() funktioner:

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

Resultat:

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

Og den har også sin egen TO_CHAR() funktion, der fungerer meget som Oracles funktion af samme navn:

SELECT TO_CHAR(7, 'fm000');

Resultat:

007

MariaDB

MariaDB har sin egen LPAD() og RPAD() funktioner:

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

Resultat:

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

Og mens MariaDB har sin egen TO_CHAR() funktion, det virker ikke på tal (det er begrænset til datetime-værdier).

MySQL

MySQL har også sin egen LPAD() og RPAD() funktioner.

Her er et eksempel på brug af LPAD() mod en databasekolonne:

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

Resultat:

+---------+----------------------+
| 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 er lidt af en anomali, fordi den ikke har en LPAD() eller RPAD() funktion.

SQL Server har dog en FORMAT() funktion, der gør os i stand til nemt at udfylde tal med indledende nuller:

SELECT FORMAT(7, '000');

Resultat:

007

Det andet argument er en streng med tilpasset numerisk format, der bestemmer, hvor mange tegn den resulterende streng vil have. Det faktum, at jeg brugte nuller betyder, at resultatet vil have indledende nuller, hvis det er nødvendigt.

For at udfylde strenge i SQL Server kan vi gøre noget som dette:

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

Resultat:

....Cat

Der er forskellige andre teknikker, vi kan bruge til at anvende padding i SQL Server.


  1. Hvordan får jeg adgang til Meteor's MongoDB fra en anden klient, mens Meteor kører?

  2. Håndtering af forbindelser

  3. Spark HBase Connector – Et års gennemgang

  4. Sådan sletter du nøgler, der matcher et mønster i Redis