- 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 (Basis
) wird links mit Zeichen/Bytes aus dem Argument Auffüllen
auf die Länge Längenausdruck
aufgefüllt.
Syntax¶
LPAD(<base>, <length_expr> [, <pad>])
Argumente¶
Basis
Dies muss ein
VARCHAR
- oderBINARY
-Wert sein.Längenausdruck
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.
Auffüllen
Dies muss ein
VARCHAR
- oderBINARY
-Wert sein. Der Typ muss mit dem Datentyp des ParametersBasis
übereinstimmen. Zeichen (oder Bytes) aus diesem Parameter werden zum Auffüllen derBasis
verwendet.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Wertes entspricht dem Datentyp des Eingabewerts Basis
(BINARY
oder VARCHAR
).
Nutzungshinweise¶
Wenn das
Basis
-Argument länger als derLängenausdruck
ist, wirdBasis
auf die LängeLängenausdruck
gekürzt.Das
Auffüllen
-Argument kann mehrere Zeichen/Bytes lang sein. DasAuffüllen
-Argument wird im Ergebnis wiederholt, bis die gewünschte LängeLängenausdruck
erreicht ist. Alle überflüssigen Zeichen/Bytes imAuffüllen
-Argument werden abgeschnitten. Wenn dasAuffüllen
-Argument leer ist, werden keine Zeichen zum Auffüllen eingefügt. Das Ergebnis wird jedoch trotzdem auf die LängeLängenausdruck
gekürzt.Wenn
Basis
eine Zeichenfolge ist, ist die standardmäßigeAuffüllen
-Zeichenfolge „ “ (ein einzelnes Leerzeichen). WennBasis
ein Binärwert ist, muss dasAuffüllen
-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 Basis
- und Auffüllen
-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 Auffüllen
-Zeichenfolgen zu vermeiden, deren Sortierung von der Basis
-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');Zeigen Sie das Auffüllen von
VARCHAR
:SELECT v, LPAD(v, 10, ' '), LPAD(v, 10, '$') FROM demo; +----------------+------------------+------------------+ | V | LPAD(V, 10, ' ') | LPAD(V, 10, '$') | |----------------+------------------+------------------| | Hi | Hi | $$$$$$$$Hi | | -123.00 | -123.00 | $$$-123.00 | | Twelve Dollars | Twelve Dol | Twelve Dol | +----------------+------------------+------------------+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; +------------------------------+----------------------+----------------------+ | B | PAD_WITH_BLANK | PAD_WITH_DOLLAR_SIGN | |------------------------------+----------------------+----------------------| | 4869 | 20202020202020204869 | 24242424242424244869 | | 2D3132332E3030 | 2020202D3132332E3030 | 2424242D3132332E3030 | | 5477656C766520446F6C6C617273 | 5477656C766520446F6C | 5477656C766520446F6C | +------------------------------+----------------------+----------------------+
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 | +--------------------------+