LEFT Skalarfunktion
Die Funktion LEFT gibt die Zeichenfolge ganz links von zeichenfolgeausdruck mit der Länge längezurück, ausgedrückt in der angegebenen Zeichenfolgeeinheit.
Das Schema ist SYSIBM. Die SYSFUN-Version der Funktion LEFT ist weiterhin verfügbar.
- zeichenfolgeausdruck
- Ein Ausdruck, der die Zeichenfolge angibt, aus der das Ergebnis abgeleitet wird. Der Ausdruck muss eine integrierte Zeichenfolge, einen numerischen Wert, einen booleschen Wertoder einen Wert für Datum und Uhrzeit zurückgeben. Wenn der Wert keine Zeichenfolge ist, wird er implizit in VARCHAR umgesetzt, bevor die Funktion ausgewertet wird. Null oder mehr zusammenhängende Codepunkte der Zeichenfolge umfassen eine Unterzeichenfolge der Zeichenfolge.
Der Zeichenfolgeausdruck wird auf der rechten Seite mit der erforderlichen Anzahl von Füllzeichen aufgefüllt, sodass die angegebene Unterzeichenfolge von Zeichenfolgeausdruck immer vorhanden ist. Das zum Auffüllen verwendete Zeichen ist dasselbe Zeichen, das zum Auffüllen der Zeichenfolge in Kontexten verwendet wird, in denen das Auffüllen auftreten würde. Weitere Informationen zum Auffüllen finden Sie unter
Zeichenfolgezuordnungen
inZuordnungen und Vergleiche
. Länge Ein Ausdruck, der die Länge des Ergebnisses angibt. Der Ausdruck muss einen Wert zurückgeben, der ein integrierter numerischer Datentyp, CHAR, VARCHAR, GRAPHIC oder VARGRAPHIC ist. Wenn der Wert nicht vom Typ INTEGER ist, wird er implizit in INTEGER umgesetzt, bevor die Funktion ausgewertet wird. Länge muss größer-gleich 0 sein (SQLSTATE 22011). Wenn OCTETS angegeben ist und das Ergebnis Grafikdaten ist, muss der Wert eine gerade Zahl sein (SQLSTATE 428GC).
Wenn length keine Konstante ist und keine Zeichenfolgeeinheit angegeben wird, muss length kleiner-gleich dem Längenattribut von zeichenfolgeausdruck sein (SQLSTATE 22011).
Wenn length keine Konstante ist und eine Zeichenfolgeeinheit angegeben wird, muss length kleiner-gleich dem entsprechenden Wert aus der folgenden Tabelle sein (SQLSTATE 22011):
Wenn length eine Konstante ist und der Datentyp von zeichenfolgeausdruck wie folgt lautet:Tabelle 1. Maximalwert für length , wenn length keine Konstante ist und eine Zeichenfolgeeinheit angegeben ist Zeichenfolgeeinheit von zeichenfolgeausdruck Angegebene Zeichenfolgeeinheit Maximalwert für length L = Längenattribut von zeichenfolgeausdruck
OCTETS OCTETS L OCTETS CODEUNITS16 L/2 OCTETS CODEUNITS32 L/4 CODEUNITS16 OCTETS L*2 CODEUNITS16 CODEUNITS16 L CODEUNITS16 CODEUNITS32 L/2 CODEUNITS32 OCTETS L*4 CODEUNITS32 CODEUNITS16 L*2 CODEUNITS32 CODEUNITS32 L - CHAR, VARCHAR, GRAPHIC oder VARGRAPHIC
- Länge muss kleiner-gleich 32.672 OCTETS, 16.336 CODEUNITS16 oder 8168 CODEUNITS32 sein (SQLSTATE 22011).
- CLOB oder DBCLOB
- länge muss kleiner-gleich 2.147.483.647 OCTETS, 1.073.741.823 CODEUNITS16oder 53.6870,911 CODEUNITS32 (SQLSTATE 22011) sein.
- BLOB
- länge muss kleiner-gleich 2.147.483.647 OCTETS sein (SQLSTATE 22011).
- CODEUNITS16, CODEUNITS32oder OCTE
- Gibt die Zeichenfolgeeinheit lengthan.
CODEUNITS16 gibt an, dass die Länge in 16 -Bit- UTF-16 -Codeeinheiten ausgedrückt wird. CODEUNITS32 gibt an, dass die Länge in 32 -Bit- UTF-32 -Codeeinheiten ausgedrückt wird. OCTETS gibt an, dass die Länge in Byte ausgedrückt wird.
Wenn die Zeichenfolgeeinheit als CODEUNITS16 oder CODEUNITS32angegeben wird und zeichenfolgeausdruck eine Binärzeichenfolge oder Bitdaten ist, wird ein Fehler zurückgegeben (SQLSTATE 428GC). Wenn die Zeichenfolgeeinheit als OCTETS angegeben wird und zeichenfolgeausdruck eine Grafikzeichenfolge ist, muss länge eine gerade Zahl sein; andernfalls wird ein Fehler zurückgegeben (SQLSTATE 428GC). Wird eine Zeichenfolgeeinheit nicht explizit angegeben, bestimmt die Zeichenfolgeeinheit von zeichenfolgeausdruck die verwendete Einheit. Weitere Informationen zu CODEUNITS16 CODEUNITS32und OCTETS finden Sie unter
Zeichenfolgeeinheiten in integrierten Funktionen
inZeichenfolgen
.
Result
- VARCHAR, wenn zeichenfolgeausdruck CHAR oder VARCHAR ist
- CLOB, wenn zeichenfolgeausdruck CLOB ist
- VARGRAPHIC, wenn zeichenfolgeausdruck GRAPHIC oder VARGRAPHIC ist
- DBCLOB, wenn zeichenfolgeausdruck DBCLOB ist
- VARBINARY, wenn zeichenfolgeausdruck BINARY oder VARBINARY ist
- BLOB, wenn zeichenfolgeausdruck BLOB ist
- Wenn length keine Konstante ist, entspricht das Längenattribut des Ergebnisses dem Längenattribut von string-expression.
- Wenn length eine Konstante ist und keine Zeichenfolgeeinheit angegeben ist, ist das Längenattribut des Ergebnisses das Maximum der Länge und das Längenattribut von string-expression.
- Wenn länge eine Konstante ist und eine Zeichenfolgeeinheit angegeben wird, wird das Längenattribut des Ergebnisses in Tabelle 2 angezeigt:
Tabelle 2. Längenattribut des Ergebnisses, wenn length eine Konstante ist und eine Zeichenfolgeeinheit angegeben wird Zeichenfolgeeinheit von zeichenfolgeausdruck Angegebene Zeichenfolgeeinheit Maximalwert für length L = Längenattribut von zeichenfolgeausdruck
OCTETS OCTETS max (L, Länge) OCTETS CODEUNITS16 max (L, länge * 2) OCTETS CODEUNITS32 max (L, Länge * 4) CODEUNITS16 OCTETS max (L, Länge /2) CODEUNITS16 CODEUNITS16 max (L, Länge) CODEUNITS16 CODEUNITS32 max (L, länge * 2) CODEUNITS32 OCTETS max (L, Länge /4) CODEUNITS32 CODEUNITS16 max (L, Länge /2) CODEUNITS32 CODEUNITS32 max (L, Länge)
Wenn ein Argument null sein kann, kann das Ergebnis null sein. Wenn ein Argument null ist, ist das Ergebnis der Nullwert.
Beispiele
- Beispiel 1: Angenommen, die Variable ALPHA hat den Wert
ABCDEF
. Die folgende Anweisung:
gibtSELECT LEFT(ALPHA,3) FROM SYSIBM.SYSDUMMY1ABC
zurück. Dies sind die drei Zeichen ganz links in ALPHA. - Beispiel 2:Angenommen, die Variable NAME, die als VARCHAR (50) definiert ist, hat den Wert
KATIE AUSTIN
und die ganzzahlige Variable FIRSTNAME_LEN hat den Wert 5. Die folgende Anweisung:
Gibt den WertSELECT LEFT(NAME,FIRSTNAME_LEN) FROM SYSIBM.SYSDUMMY1KATIE
zurück. - Beispiel 3: Die folgende Anweisung gibt eine Zeichenfolge mit Nulllänge zurück.
SELECT LEFT('ABCABC',0) FROM SYSIBM.SYSDUMMY1 - Beispiel 4: Die Spalte FIRSTNME in der Tabelle EMPLOYEE ist als VARCHAR (12) definiert. Suchen Sie den Vornamen eines Mitarbeiters mit dem Nachnamen
BROWN
und geben Sie den Vornamen in einer 10-Byte-Zeichenfolge zurück.
gibt eine VARCHAR (12) -Zeichenfolge zurück, die den WertSELECT LEFT(FIRSTNME, 10) FROM EMPLOYEE WHERE LASTNAME = 'BROWN'DAVID
gefolgt von fünf Leerzeichen enthält. - Beispiel 5:In einer Unicodedatenbank ist FIRSTNAME eine VARCHAR (12) -Spalte. Einer seiner Werte ist die 6-stellige Zeichenfolge
Jürgen
. Wenn FIRSTNAME diesen Wert hat:Function... Returns... LEFT(FIRSTNAME,2,CODEUNITS32) 'Jü' -- x'4AC3BC' LEFT(FIRSTNAME,2,CODEUNITS16) 'Jü' -- x'4AC3BC' LEFT(FIRSTNAME,2,OCTETS) 'J' -- x'4A20', a truncated string - Beispiel 6: Das folgende Beispiel arbeitet mit der Unicode-Zeichenfolge
& N ~ AB
, wobei&
das musikalische Symbol G clef-Zeichen und~
das Kombinierungszeichen ist. Diese Zeichenfolge wird im folgenden Beispiel in verschiedenen Unicode-Codierungsformaten angezeigt:&
N
~
:NONE.
b
UTF-8 X'F09D849E' X'4E' X'CC83' X'41' X'42' UTF-16BE X'D834DD1E' X'004E' X'0303' X'0041' X'0042' Angenommen, die Variable UTF8_VARmit einem Längenattribut von 20 Byte enthält die UTF-8 -Darstellung der Zeichenfolge.
gibt die WerteSELECT LEFT(UTF8_VAR, 2, CODEUNITS16), LEFT(UTF8_VAR, 2, CODEUNITS32), LEFT(UTF8_VAR, 2, OCTETS) FROM SYSIBM.SYSDUMMY1&
,& N
bzw.bb
zurück, wobeib
das Leerzeichen darstellt. Zeichen.
Gibt die WerteSELECT LEFT(UTF8_VAR, 5, CODEUNITS16), LEFT(UTF8_VAR, 5, CODEUNITS32), LEFT(UTF8_VAR, 5, OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ A
,& N ~ AB
bzw.& N
zurück.
gibt die WerteSELECT LEFT(UTF8_VAR, 10, CODEUNITS16), LEFT(UTF8_VAR, 10, CODEUNITS32), LEFT(UTF8_VAR, 10, OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ ABbbbb
,& N ~ ABbbbbb
und& N ~ ABb
zurück.b
steht für das Leerzeichen.Angenommen, die Variable UTF16_VARmit einem Längenattribut von 20 Codeeinheiten enthält die UTF-16BE -Darstellung der Zeichenfolge.
Gibt die WerteSELECT LEFT(UTF16_VAR, 2, CODEUNITS16), LEFT(UTF16_VAR, 2, CODEUNITS32), HEX (LEFT(UTF16_VAR, 2, OCTETS)) FROM SYSIBM.SYSDUMMY1&
,& N
und X'D834'zurück, wobei X'D834' ein hohes Ersatzzeichen ohne Entsprechung ist.
Gibt die WerteSELECT LEFT(UTF16_VAR, 5, CODEUNITS16), LEFT(UTF16_VAR, 5, CODEUNITS32), LEFT(UTF16_VAR, 6, OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ A
,& N ~ AB
bzw.& N
zurück.
Gibt die WerteSELECT LEFT(UTF16_VAR, 10, CODEUNITS16), LEFT(UTF16_VAR, 10, CODEUNITS32), LEFT(UTF16_VAR, 10, OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ ABBbbb
,& N ~ ABBbbbb
bzw.& N ~ A
zurück, wobeiB
das Leerzeichen darstellt.
