LEFT funzione scalare
La funzione LEFT restituisce la stringa di sinistra di stringa - espressione di lunghezza lunghezza, espressa nell'unità di stringa specificata.
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
inAssegnazioni 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):
Se lunghezza è una costante e il tipo di dati di stringa - espressione è: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 - 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
instringhe di caratteri
.
Risultato
- 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
- 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)
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:
restituisceSELECT LEFT(ALPHA,3) FROM SYSIBM.SYSDUMMY1ABC
, 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 AUSTIN
e che la variabile intera FIRSTNAME_LEN ha un valore di 5. La seguente istruzione:
restituisce il valoreSELECT LEFT(NAME,FIRSTNAME_LEN) FROM SYSIBM.SYSDUMMY1KATIE
. - 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.
restituisce una stringa VARCHAR (12) che ha il valoreSELECT LEFT(FIRSTNME, 10) FROM EMPLOYEE WHERE LASTNAME = 'BROWN'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.
restituisce i valoriSELECT LEFT(UTF8_VAR, 2, CODEUNITS16), LEFT(UTF8_VAR, 2, CODEUNITS32), LEFT(UTF8_VAR, 2, OCTETS) FROM SYSIBM.SYSDUMMY1&
,& N
ebb
, rispettivamente, doveb
rappresenta il bianco carattere.
restituisce i valoriSELECT LEFT(UTF8_VAR, 5, CODEUNITS16), LEFT(UTF8_VAR, 5, CODEUNITS32), LEFT(UTF8_VAR, 5, OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ A
,& N ~ AB
e& N
, rispettivamente.
restituisce i valoriSELECT LEFT(UTF8_VAR, 10, CODEUNITS16), LEFT(UTF8_VAR, 10, CODEUNITS32), LEFT(UTF8_VAR, 10, OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ ABbbbb
,& N ~ ABbbbbb
, e& N ~ ABb
, rispettivamente, doveb
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.
restituisce i valoriSELECT LEFT(UTF16_VAR, 2, CODEUNITS16), LEFT(UTF16_VAR, 2, CODEUNITS32), HEX (LEFT(UTF16_VAR, 2, OCTETS)) FROM SYSIBM.SYSDUMMY1&
,& N
e X'D834', rispettivamente, dove X'D834' è un surrogato alto non corrispondente.
restituisce i valoriSELECT LEFT(UTF16_VAR, 5, CODEUNITS16), LEFT(UTF16_VAR, 5, CODEUNITS32), LEFT(UTF16_VAR, 6, OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ A
,& N ~ AB
e& N
, rispettivamente.
restituisce i valoriSELECT LEFT(UTF16_VAR, 10, CODEUNITS16), LEFT(UTF16_VAR, 10, CODEUNITS32), LEFT(UTF16_VAR, 10, OCTETS) FROM SYSIBM.SYSDUMMY1& N ~ ABbbbb
,& N ~ ABbbbbb
e& N ~ A
, rispettivamente, doveb
rappresenta il carattere in bianco.
