LEFT funzione scalare

La funzione LEFT restituisce la stringa di sinistra di stringa - espressione di lunghezza lunghezza, espressa nell'unità di stringa specificata.

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

Lo schema è SYSIBM. La versione SYSFUN della funzione LEFT continua ad essere disponibile.

stringa - espressione
Un'espressione che specifica la stringa da cui deriva il risultato. L'espressione deve restituire una stringa incorporata, valore numerico, valore Booleano valore datetime. Se il valore non è una stringa, viene implicitamente cast a VARCHAR prima che la funzione venga valutata. Zero o più punti di codice contigui della stringa comprendono una sottostringa della stringa.

La stringa - espressione viene imbottita a destra con il numero necessario di caratteri di riempimento in modo che la sottostringa specificata di stringa - espressione esista sempre. Il carattere utilizzato per l'imbottiatura è lo stesso carattere che viene utilizzato per riempire la stringa in contesti in cui si verificherebbe il riempimento. Per ulteriori informazioni sull'imbottezione consultare assegnazioni di stringhe in Assegnazioni e confronti.

lunghezza

Un'espressione che specifica la lunghezza del risultato. L'espressione deve restituire un valore che sia un tipo di dati numerico incorporato, CHAR, VARCHAR, GRAPHIC o VARGRAPHIC. Se il valore non è di tipo INTERO, viene implicitamente cast a INTERO prima di valutare la funzione. lunghezza deve essere maggiore o uguale a 0 (SQLSTATE 22011). Se viene specificato OCTETS e il risultato è dato grafico, il valore deve essere un numero pari (SQLSTATE 428GC).

Se lunghezza non è una costante e un'unità di stringa non è specificata, lunghezza deve essere inferiore o uguale all'attributo lunghezza di stringa - espressione (SQLSTATE 22011).

Se lunghezza non è una costante e viene specificata una unità stringa, lunghezza deve essere inferiore o uguale al valore corrispondente dalla seguente tabella (SQLSTATE 22011):

Tabella 1. Valore massimo di lunghezza quando lunghezza non è una costante e viene specificata un'unità di stringa
Unità di stringa di stringa - espressione Unità di stringa specificata Valore massimo di lunghezza

L = attributo lunghezza di stringa - espressione

ottetti ottetti L
ottetti CODEUNITS16 L/2
ottetti CODEUNITS32 L/4
CODEUNITS16 ottetti L*2
CODEUNITS16 CODEUNITS16 L
CODEUNITS16 CODEUNITS32 L/2
CODEUNITS32 ottetti L*4
CODEUNITS32 CODEUNITS16 L*2
CODEUNITS32 CODEUNITS32 L
Se lunghezza è una costante e il tipo di dati di stringa - espressione è:
CHAR, VARCHAR, GRAPHIC o VARGRAPHIC
lunghezza deve essere inferiore o uguale a 32.672 OCTETS, 16.336 CODEUNITS16 o 8168 CODEUNITS32 (SQLSTATE 22011).
CLOB o DBCLOB
lunghezza deve essere inferiore o uguale a 2.147.483.647 OCTETS, 1.073.741.823 CODEUNITS16o 53,6870,911 CODEUNITS32 (SQLSTATE 22011).
BLOB
lunghezza deve essere inferiore o uguale a 2.147.483.647 OCTETS (SQLSTATE 22011).
CODEUNITS16, CODEUNITS32o OCTETS
Specifica l'unità di stringa di lunghezza.

CODEUNITS16 specifica che lunghezza è espressa in 16 - bit unità di codice UTF-16 . CODEUNITS32 specifica che lunghezza è espressa in 32 - bit unità di codice UTF-32 . OCTETS specifica che lunghezza è espressa in byte.

Se l'unità di stringa viene specificata come CODEUNITS16 o CODEUNITS32, e stringa - espressione è una stringa binaria o dati bit, viene restituito un errore (SQLSTATE 428GC). Se l'unità di stringa viene specificata come OCTETS e stringa - espressione è una stringa grafica, lunghezza deve essere un numero pari; altrimenti viene restituito un errore (SQLSTATE 428GC). Se un'unità di stringa non viene specificata esplicitamente, l'unità di stringa di stringa - espressione determina l'unità utilizzata. Per ulteriori informazioni su CODEUNITS16, CODEUNITS32e OCTETS, consultare Unità di stringa nelle funzioni integrate in stringhe di caratteri.

Risultato

Il risultato della funzione è una stringa di varia lunghezza che dipende dal tipo di dati di stringa - espressione:
  • VARCHAR se stringa - espressione è di tipo CHAR o VARCHAR
  • CLOB se stringa - espressione è CLOB
  • VARGRAPHIC se stringa - espressione è GRAPHIC o VARGRAPHIC
  • DBCLOB se stringa - espressione è DBCLOB
  • VARBINARIO se stringa - espressione è BINARIO o VARBINARIO
  • BLOB se stringa - espressione è BLOB
L'unità di stringa del risultato è l'unità di stringa di stringa - espressione.L'attributo di lunghezza del risultato dipende da come sono specificate lunghezza e unità di stringa:
  • Se lunghezza non è una costante, allora l'attributo di lunghezza del risultato è lo stesso dell'attributo lunghezza di stringa - espressione.
  • Se lunghezza è una costante e un'unità di stringa non è specificata, allora l'attributo di lunghezza del risultato è il massimo della lunghezza e l'attributo lunghezza di stringa - espressione.
  • Se lunghezza è una unità costante e di stringa viene specificato, allora l'attributo di lunghezza del risultato è riportato nella Tabella 2:
    Tabella 2. Lunghezza attributo di risultato quando lunghezza è una costante e viene specificata un'unità di stringa
    Unità di stringa di stringa - espressione Unità di stringa specificata Valore massimo di lunghezza

    L = attributo lunghezza di stringa - espressione

    ottetti ottetti max (L, lunghezza)
    ottetti CODEUNITS16 max (L, lunghezza * 2)
    ottetti CODEUNITS32 max (L, lunghezza * 4)
    CODEUNITS16 ottetti max (L, lunghezza / 2)
    CODEUNITS16 CODEUNITS16 max (L, lunghezza)
    CODEUNITS16 CODEUNITS32 max (L, lunghezza * 2)
    CODEUNITS32 ottetti max (L, lunghezza / 4)
    CODEUNITS32 CODEUNITS16 max (L, lunghezza / 2)
    CODEUNITS32 CODEUNITS32 max (L, lunghezza)
La lunghezza effettiva del risultato (in unità di stringa) è lunghezza.

Se un qualsiasi argomento può essere nullo, il risultato può essere nullo; se un qualsiasi argomento è nullo, il risultato è il valore nullo.

Esempi

  • Esempio 1: Assumi che la variabile ALPHA ha un valore di ABCDEF. La seguente istruzione:
       SELECT LEFT(ALPHA,3)
         FROM SYSIBM.SYSDUMMY1
    restituisce ABC, che sono i tre caratteri di estrema sinistra in ALPHA.
  • Esempio 2: Assumi che variabile NAME, definito come VARCHAR (50), ha un valore di KATIE AUSTINe che la variabile intera FIRSTNAME_LEN ha un valore di 5. La seguente istruzione:
       SELECT LEFT(NAME,FIRSTNAME_LEN)
         FROM SYSIBM.SYSDUMMY1
    restituisce il valore KATIE.
  • Esempio 3: la seguente istruzione restituisce una stringa di lunghezza zero.
       SELECT LEFT('ABCABC',0)
         FROM SYSIBM.SYSDUMMY1
  • Esempio 4: la colonna FIRSTNME nella tabella EMPLOYEE è definita come VARCHAR (12). Trova il primo nome di un impiegato il cui cognome è BROWN e restituisce il primo nome in una stringa di 10 - byte.
       SELECT LEFT(FIRSTNME, 10)
         FROM EMPLOYEE
         WHERE LASTNAME = 'BROWN'
    restituisce una stringa VARCHAR (12) che ha il valore DAVID seguito da cinque caratteri vuoti.
  • Esempio 5: in un database Unicode, FIRSTNAME è una colonna VARCHAR (12). Uno dei suoi valori è la stringa di 6 caratteri Jürgen. Quando FIRSTNAME ha questo valore:
       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
  • Esempio 6: il seguente esempio funziona con la stringa Unicode & N ~ AB, dove & è il simbolo musicale G clef carattere e ~ è il carattere di tilde combinabile. Questa stringa viene mostrata in diversi moduli di codifica Unicode nel seguente esempio:
      & s ~ Una 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 "
    Supporre che la variabile UTF8_VAR, con un attributo di lunghezza di 20 bytes, contenga la rappresentazione UTF-8 della stringa.
       SELECT LEFT(UTF8_VAR, 2, CODEUNITS16),
         LEFT(UTF8_VAR, 2, CODEUNITS32),
         LEFT(UTF8_VAR, 2, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    restituisce i valori &, & Ne bb, rispettivamente, dove b rappresenta il bianco carattere.
       SELECT LEFT(UTF8_VAR, 5, CODEUNITS16),
         LEFT(UTF8_VAR, 5, CODEUNITS32),
         LEFT(UTF8_VAR, 5, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    restituisce i valori & N ~ A, & N ~ ABe & N, rispettivamente.
       SELECT LEFT(UTF8_VAR, 10, CODEUNITS16),
         LEFT(UTF8_VAR, 10, CODEUNITS32),
         LEFT(UTF8_VAR, 10, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    restituisce i valori & N ~ ABbbbb, & N ~ ABbbbbb, e & N ~ ABb, rispettivamente, dove b rappresenta il carattere in bianco.
    Ipotizza che la variabile UTF16_VAR, con un attributo di lunghezza di 20 unità di codice, contenga la rappresentazione UTF-16BE della stringa.
       SELECT LEFT(UTF16_VAR, 2, CODEUNITS16),
         LEFT(UTF16_VAR, 2, CODEUNITS32),
         HEX (LEFT(UTF16_VAR, 2, OCTETS))
       FROM SYSIBM.SYSDUMMY1
    restituisce i valori &, & Ne X'D834', rispettivamente, dove X'D834' è un surrogato alto non corrispondente.
       SELECT LEFT(UTF16_VAR, 5, CODEUNITS16),
         LEFT(UTF16_VAR, 5, CODEUNITS32),
         LEFT(UTF16_VAR, 6, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    restituisce i valori & N ~ A, & N ~ ABe & N, rispettivamente.
       SELECT LEFT(UTF16_VAR, 10, CODEUNITS16),
         LEFT(UTF16_VAR, 10, CODEUNITS32),
         LEFT(UTF16_VAR, 10, OCTETS)
       FROM SYSIBM.SYSDUMMY1
    restituisce i valori & N ~ ABbbbb, & N ~ ABbbbbbe & N ~ A, rispettivamente, dove b rappresenta il carattere in bianco.