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.

Read syntax diagramSkip visual syntax diagramLEFT(string-expression ,length ,CODEUNITS16CODEUNITS32OCTETS )

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 in Zuordnungen 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):

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
Wenn length eine Konstante ist und der Datentyp von zeichenfolgeausdruck wie folgt lautet:
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 in Zeichenfolgen.

Result

Das Ergebnis der Funktion ist eine Zeichenfolge variabler Länge, die vom Datentyp zeichenfolgeausdruckabhängt:
  • 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
Die Zeichenfolgeeinheit des Ergebnisses ist die Zeichenfolgeeinheit von Zeichenfolgeausdruck.Das Längenattribut des Ergebnisses hängt davon ab, wie Länge und Zeichenfolgeeinheit angegeben sind:
  • 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)
Die tatsächliche Länge des Ergebnisses (in Zeichenfolgeeinheiten) ist length.

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:
       SELECT LEFT(ALPHA,3)
         FROM SYSIBM.SYSDUMMY1
    gibt ABCzurü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 AUSTINund die ganzzahlige Variable FIRSTNAME_LEN hat den Wert 5. Die folgende Anweisung:
       SELECT LEFT(NAME,FIRSTNAME_LEN)
         FROM SYSIBM.SYSDUMMY1
    Gibt den Wert KATIEzurü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.
       SELECT LEFT(FIRSTNME, 10)
         FROM EMPLOYEE
         WHERE LASTNAME = 'BROWN'
    gibt eine VARCHAR (12) -Zeichenfolge zurück, die den Wert 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.
       SELECT LEFT(UTF8_VAR, 2, CODEUNITS16),
         LEFT(UTF8_VAR, 2, CODEUNITS32),
         LEFT(UTF8_VAR, 2, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    gibt die Werte &, & Nbzw. bbzurück, wobei b das Leerzeichen darstellt. Zeichen.
       SELECT LEFT(UTF8_VAR, 5, CODEUNITS16),
         LEFT(UTF8_VAR, 5, CODEUNITS32),
         LEFT(UTF8_VAR, 5, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    Gibt die Werte & N ~ A, & N ~ ABbzw. & Nzurück.
       SELECT LEFT(UTF8_VAR, 10, CODEUNITS16),
         LEFT(UTF8_VAR, 10, CODEUNITS32),
         LEFT(UTF8_VAR, 10, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    gibt die Werte & N ~ ABbbbb, & N ~ ABbbbbbund & N ~ ABbzurü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.
       SELECT LEFT(UTF16_VAR, 2, CODEUNITS16),
         LEFT(UTF16_VAR, 2, CODEUNITS32),
         HEX (LEFT(UTF16_VAR, 2, OCTETS))
       FROM SYSIBM.SYSDUMMY1
    Gibt die Werte &, & Nund X'D834'zurück, wobei X'D834' ein hohes Ersatzzeichen ohne Entsprechung ist.
       SELECT LEFT(UTF16_VAR, 5, CODEUNITS16),
         LEFT(UTF16_VAR, 5, CODEUNITS32),
         LEFT(UTF16_VAR, 6, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    Gibt die Werte & N ~ A, & N ~ ABbzw. & Nzurück.
       SELECT LEFT(UTF16_VAR, 10, CODEUNITS16),
         LEFT(UTF16_VAR, 10, CODEUNITS32),
         LEFT(UTF16_VAR, 10, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    Gibt die Werte & N ~ ABBbbb, & N ~ ABBbbbbbzw. & N ~ Azurück, wobei B das Leerzeichen darstellt.