Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Funzione SUBSTRING

Modalità Focus
Funzione SUBSTRING - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Restituisce il sottoinsieme di una stringa basata su una posizione iniziale specificata.

Se l'input è una stringa di carattere, la posizione iniziale e il numero di caratteri estratti si basano sui caratteri, non di byte, pertanto i caratteri multibyte vengono contati come caratteri singoli. Se l'input è un'espressione binaria, la posizione iniziale e la sottostringa estratta sono basate su byte. Non è possibile specificare una lunghezza negativa, ma è possibile specificare una posizione di partenza negativa.

Sintassi

SUBSTRING(character_string FROM start_position [ FOR number_characters ] )
SUBSTRING(character_string, start_position, number_characters )
SUBSTRING(binary_expression, start_byte, number_bytes )
SUBSTRING(binary_expression, start_byte )

Argomenti

character_string

La stringa da cercare. I tipi di dati non carattere sono trattati come una stringa.

start_position

La posizione all'interno della stringa per iniziare l'estrazione, a partire da 1. La start_position si basa sul numero di caratteri, non di byte, pertanto i caratteri multibyte vengono contati come caratteri singoli. Questo numero può essere negativo.

number_characters

Il numero di caratteri da estrarre (la lunghezza della sottostringa). Il number_characters si basa sul numero di caratteri, non di byte, pertanto i caratteri multibyte vengono contati come caratteri singoli. Questo numero non può essere negativo.

binary_expression

L'espressione binaria del tipo di dati VARBYTE da cercare.

start_byte

La posizione all'interno dell'espressione binaria per iniziare l'estrazione, a partire da 1. Questo numero può essere negativo.

number_byte

Il numero di byte da estrarre, ovvero, la lunghezza della sottostringa. Questo numero non può essere negativo.

Tipo restituito

VARCHAR o VARBYTE a seconda dell'input

Note per l'utilizzo

Di seguito sono riportati alcuni esempi di come è possibile utilizzare start_position e number_characters per estrarre sottostringhe da varie posizioni in una stringa.

L'esempio seguente restituisce una stringa di quattro caratteri che inizia con il sesto carattere.

select substring('caterpillar',6,4); substring ----------- pill (1 row)

Se posizione_iniziale + numero_caratteri supera la lunghezza della stringa, SUBSTRING restituisce una sottostringa che inizia dalla posizione_iniziale fino alla fine della stringa. Ad esempio:

select substring('caterpillar',6,8); substring ----------- pillar (1 row)

Se la start_position è negativa o pari a 0, la funzione SUBSTRING restituisce una sottostringa che inizia dal primo carattere di stringa con una lunghezza di start_position + number_characters -1. Ad esempio:

select substring('caterpillar',-2,6); substring ----------- cat (1 row)

Se start_position + number_characters -1 è inferiore o pari a zero, SUBSTRING restituisce una stringa vuota. Ad esempio:

select substring('caterpillar',-5,4); substring ----------- (1 row)

Esempi

L'esempio seguente restituisce il mese dalla stringa LISTTIME nella tabella LISTING:

select listid, listtime, substring(listtime, 6, 2) as month from listing order by 1, 2, 3 limit 10; listid | listtime | month --------+---------------------+------- 1 | 2008-01-24 06:43:29 | 01 2 | 2008-03-05 12:25:29 | 03 3 | 2008-11-01 07:35:33 | 11 4 | 2008-05-24 01:18:37 | 05 5 | 2008-05-17 02:29:11 | 05 6 | 2008-08-15 02:08:13 | 08 7 | 2008-11-15 09:38:15 | 11 8 | 2008-11-09 05:07:30 | 11 9 | 2008-09-09 08:03:36 | 09 10 | 2008-06-17 09:44:54 | 06 (10 rows)

L'esempio seguente è lo stesso di sopra, ma utilizza l'opzione FROM...FOR:

select listid, listtime, substring(listtime from 6 for 2) as month from listing order by 1, 2, 3 limit 10; listid | listtime | month --------+---------------------+------- 1 | 2008-01-24 06:43:29 | 01 2 | 2008-03-05 12:25:29 | 03 3 | 2008-11-01 07:35:33 | 11 4 | 2008-05-24 01:18:37 | 05 5 | 2008-05-17 02:29:11 | 05 6 | 2008-08-15 02:08:13 | 08 7 | 2008-11-15 09:38:15 | 11 8 | 2008-11-09 05:07:30 | 11 9 | 2008-09-09 08:03:36 | 09 10 | 2008-06-17 09:44:54 | 06 (10 rows)

Non è possibile utilizzare SUBSTRING per estrarre in modo prevedibile il prefisso di una stringa che potrebbe contenere caratteri multibyte poiché è necessario specificare la lunghezza di una stringa multibyte in base al numero di byte, non al numero di caratteri. Per estrarre il segmento iniziale di una stringa in base alla lunghezza in byte, è possibile eseguire il CAST della stringa come VARCHAR(byte_length) per troncare la stringa, laddove byte_length è la lunghezza necessaria. L'esempio seguente estrae i primi 5 byte dalla stringa 'Fourscore and seven'.

select cast('Fourscore and seven' as varchar(5)); varchar ------- Fours

L'esempio seguente mostra una posizione iniziale negativa di un valore binario abc. Poiché la posizione iniziale è -3, la sottostringa viene estratta dall'inizio del valore binario. Il risultato viene visualizzato automaticamente come rappresentazione esadecimale della sottostringa binaria.

select substring('abc'::varbyte, -3); substring ----------- 616263

L'esempio seguente mostra un valore 1 per la posizione iniziale di un valore binario abc. Poiché non è specificata la lunghezza, la stringa viene estratta dalla posizione iniziale alla fine della stringa. Il risultato viene visualizzato automaticamente come rappresentazione esadecimale della sottostringa binaria.

select substring('abc'::varbyte, 1); substring ----------- 616263

L'esempio seguente mostra un 3 per la posizione iniziale di un valore binario abc. Poiché non è specificata la lunghezza, la stringa viene estratta dalla posizione iniziale alla fine della stringa. Il risultato viene visualizzato automaticamente come rappresentazione esadecimale della sottostringa binaria.

select substring('abc'::varbyte, 3); substring ----------- 63

L'esempio seguente mostra un 2 per la posizione iniziale di un valore binario abc. La stringa viene estratta dalla posizione iniziale alla posizione 10, ma la fine della stringa si trova nella posizione 3. Il risultato viene visualizzato automaticamente come rappresentazione esadecimale della sottostringa binaria.

select substring('abc'::varbyte, 2, 10); substring ----------- 6263

L'esempio seguente mostra un 2 per la posizione iniziale di un valore binario abc. La stringa viene estratta dalla posizione iniziale per 1 byte. Il risultato viene visualizzato automaticamente come rappresentazione esadecimale della sottostringa binaria.

select substring('abc'::varbyte, 2, 1); substring ----------- 62

L'esempio seguente restituisce il nome Ana che appare dopo l'ultimo spazio nella stringa di input Silva, Ana.

select reverse(substring(reverse('Silva, Ana'), 1, position(' ' IN reverse('Silva, Ana')))) reverse ----------- Ana

Argomento successivo:

TEXTLEN

Argomento precedente:

STRTOL

In questa pagina

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.