Kategorien:

Zeichenfolgen- und Binärfunktionen (Allgemein)

LPAD

Füllt eine Zeichenfolge links mit Zeichen aus einer anderen Zeichenfolge auf oder füllt einen Binärwert links mit Bytes aus einem anderen Binärwert auf.

Das Argument (base) wird links mit Zeichen/Bytes aus dem Argument pad auf die Länge length_expr aufgefüllt.

Syntax

LPAD(<base>, <length_expr> [, <pad>])
Copy

Argumente

base

Dies muss ein VARCHAR- oder BINARY-Wert sein.

length_expr

Die Länge muss ein Ausdruck sein, der zu einer Ganzzahl ausgewertet wird. Es muss angeben:

  • Die Anzahl der zurückzugebenden UTF-8 Zeichen, wenn die Eingabe VARCHAR lautet.

  • Die Anzahl der zurückzugebenden Bytes, wenn die Eingabe BINARY ist.

pad

Dies muss ein VARCHAR- oder BINARY-Wert sein. Der Typ muss mit dem Datentyp des Parameters base übereinstimmen. Zeichen (oder Bytes) aus diesem Parameter werden zum Auffüllen der base verwendet.

Rückgabewerte

Der Datentyp des zurückgegebenen Wertes entspricht dem Datentyp des Eingabewerts base (BINARY oder VARCHAR).

Nutzungshinweise

  • Wenn das base-Argument länger als die Länge in length_expr ist, wird base auf die Länge length_expr gekürzt.

  • Das pad-Argument kann mehrere Zeichen/Bytes lang sein. Das pad-Argument wird im Ergebnis wiederholt, bis die gewünschte Länge length_expr erreicht ist. Alle überflüssigen Zeichen/Bytes im pad-Argument werden abgeschnitten. Wenn das pad-Argument leer ist, werden keine Zeichen zum Auffüllen eingefügt. Das Ergebnis wird jedoch trotzdem auf die Länge length_expr gekürzt.

  • Wenn base eine Zeichenfolge ist, ist die standardmäßige pad-Zeichenfolge „ “ (ein einzelnes Leerzeichen). Wenn base ein Binärwert ist, muss das pad-Argument explizit angegeben werden.

Sortierungsdetails

Sortierung gilt für VARCHAR-Eingaben. Sortierung gilt nicht, wenn der Eingabedatentyp des ersten Parameters BINARY ist.

Obwohl Sortierungen syntaktisch akzeptiert werden, haben sie keine Auswirkungen auf die Verarbeitung. Beispielsweise zählen Sprachen mit zwei- und dreistelligen Buchstaben (z. B. „dzs“ im Ungarischen, „ch“ im Tschechischen) weiterhin zwei oder drei Zeichen (nicht ein Zeichen) für das Längenargument.

The collation of the result is the same as the collation of the first input. Dies kann nützlich sein, wenn der zurückgegebene Wert als Teil verschachtelter Funktionsaufrufe an eine andere Funktion übergeben wird.

Derzeit können die base- und pad-Argumente in Snowflake unterschiedliche Sortierungsspezifizierer haben. Die einzelnen Sortierungsspezifizierer können jedoch nicht beide beibehalten werden, da der zurückgegebene Wert nur einen Sortierungsspezifizierer enthält. Snowflake empfiehlt Benutzern, die Verwendung von pad-Zeichenfolgen zu vermeiden, deren Sortierung von der base-Zeichenfolge abweicht.

Beispiele

Dieses Beispiel zeigt das Auffüllen von VARCHAR- und BINARY-Daten:

Erstellen Sie eine Tabelle, und füllen Sie diese:

CREATE TABLE demo (v VARCHAR, b BINARY);
INSERT INTO demo (v, b) SELECT 'Hi', HEX_ENCODE('Hi');
INSERT INTO demo (v, b) SELECT '-123.00', HEX_ENCODE('-123.00');
INSERT INTO demo (v, b) SELECT 'Twelve Dollars', 
  TO_BINARY(HEX_ENCODE('Twelve Dollars'), 'HEX');
Copy

Zeigen Sie das Auffüllen von VARCHAR:

SELECT v, LPAD(v, 10, ' '),             
          LPAD(v, 10, '$')
    FROM demo
    ORDER BY v;
+----------------+------------------+------------------+
| V              | LPAD(V, 10, ' ') | LPAD(V, 10, '$') |
|----------------+------------------+------------------|
| -123.00        |    -123.00       | $$$-123.00       |
| Hi             |         Hi       | $$$$$$$$Hi       |
| Twelve Dollars | Twelve Dol       | Twelve Dol       |
+----------------+------------------+------------------+
Copy

Zeigen Sie das Auffüllen von BINARY:

SELECT b, LPAD(b, 10, TO_BINARY(HEX_ENCODE(' '))) AS PAD_WITH_BLANK, 
          LPAD(b, 10, TO_BINARY(HEX_ENCODE('$'))) AS PAD_WITH_DOLLAR_SIGN 
    FROM demo
    ORDER BY b;
+------------------------------+----------------------+----------------------+
| B                            | PAD_WITH_BLANK       | PAD_WITH_DOLLAR_SIGN |
|------------------------------+----------------------+----------------------|
| 2D3132332E3030               | 2020202D3132332E3030 | 2424242D3132332E3030 |
| 4869                         | 20202020202020204869 | 24242424242424244869 |
| 5477656C766520446F6C6C617273 | 5477656C766520446F6C | 5477656C766520446F6C |
+------------------------------+----------------------+----------------------+
Copy

Dieses Beispiel zeigt das Auffüllen, wenn mehrere Zeichen verwendet werden und das Auffüllen kein gerades Vielfaches der Länge der aus mehreren Zeichen bestehenden Auffüllzeichenfolge ist:

SELECT LPAD('123.50', 19, '*_');
+--------------------------+
| LPAD('123.50', 19, '*_') |
|--------------------------|
| *_*_*_*_*_*_*123.50      |
+--------------------------+
Copy