MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Auffüllen in SQL

Einige RDBMS stellen ein LPAD() bereit und RPAD() Funktion, die es uns ermöglicht, eine Zeichenfolge links oder rechts aufzufüllen. Bei einigen Funktionen können wir auch führende oder nachgestellte Nullen hinzufügen.

Nachfolgend finden Sie Beispiele für die Anwendung von SQL-Padding in einigen der bekannteren RDBMSs.

Orakel

Oracle stellt uns LPAD() zur Verfügung und RPAD() speziell zum Auffüllen des linken oder rechten Teils einer Zeichenfolge:

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

Ergebnis:

         LPAD('CAT',20) 
_______________________ 
                 Cat    

In diesem Fall habe ich LPAD() verwendet links auffüllen, und die resultierende Zeichenfolge ist 20 Zeichen lang, weil ich das für das zweite Argument verwendet habe.

Das Ergebnis wird mit einem Leerzeichen aufgefüllt, da dies das Standardzeichen zum Auffüllen ist. Wenn Sie nicht angeben, mit welchem ​​Zeichen die Zeichenfolge aufgefüllt werden soll, wird ein Leerzeichen verwendet.

Sie können ein drittes Zeichen hinzufügen, um anzugeben, welches Zeichen zum Auffüllen verwendet werden soll:

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

Ergebnis:

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

In diesem Fall habe ich eine Zahl mit Nullen aufgefüllt (obwohl das Ergebnis ein String ist).

Oracle hat auch einen TO_CHAR(number) Funktion, die verwendet werden kann, um führende Nullen zu einer Zahl hinzuzufügen:

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

Ergebnis:

007

Die 0 format-Element repräsentiert jede Ziffer in der ursprünglichen Zahl und Null, wenn an dieser Position in der ursprünglichen Zahl keine Ziffer vorhanden ist.

PostgreSQL

PostgreSQL hat auch sein eigenes LPAD() und RPAD() Funktionen:

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

Ergebnis:

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

Und es hat auch sein eigenes TO_CHAR() Funktion, die ähnlich wie die gleichnamige Funktion von Oracle funktioniert:

SELECT TO_CHAR(7, 'fm000');

Ergebnis:

007

MariaDB

MariaDB hat ein eigenes LPAD() und RPAD() Funktionen:

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

Ergebnis:

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

Und während MariaDB seinen eigenen TO_CHAR() hat funktioniert nicht mit Zahlen (es ist auf datetime-Werte beschränkt).

MySQL

MySQL hat auch sein eigenes LPAD() und RPAD() Funktionen.

Hier ist ein Beispiel für die Verwendung von LPAD() gegen eine Datenbankspalte:

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

Ergebnis:

+---------+----------------------+
| 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 ist insofern eine kleine Anomalie, als es kein LPAD() hat oder RPAD() Funktion.

SQL Server hat jedoch ein FORMAT() Funktion, mit der wir Zahlen einfach mit führenden Nullen auffüllen können:

SELECT FORMAT(7, '000');

Ergebnis:

007

Das zweite Argument ist eine benutzerdefinierte numerische Formatzeichenfolge, die bestimmt, wie viele Zeichen die resultierende Zeichenfolge haben wird. Die Tatsache, dass ich Nullen verwendet habe, bedeutet, dass das Ergebnis bei Bedarf führende Nullen enthält.

Um Strings in SQL Server aufzufüllen, können wir etwa so vorgehen:

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

Ergebnis:

....Cat

Es gibt verschiedene andere Techniken, die wir zum Anwenden von Padding in SQL Server verwenden können.