mysql substring substring_index functions with examples
Scopri le funzioni SUBSTRING e SUBSTRING_INDEX di MySQL e il suo utilizzo con più esempi:
La funzione Sottostringa di MySQL viene utilizzata per estrarre una sottostringa o una parte di stringa dalla stringa di input. Come suggerisce il nome, la funzione Sottostringa opera su una stringa di input e restituisce una sottostringa più piccola rispetto alle opzioni specificate.
Impareremo anche un'altra variante di SUBSTRING chiamata SUBSTRING_INDEX. Questa funzione accetta il carattere o il valore stringa come delimitatore ed esegue una ricerca in base al valore delimitatore specificato.
Esamineremo anche alcuni esempi per capire come queste funzioni possono essere utilizzate durante l'interrogazione dei dati come parte delle query SELECT.
Cosa imparerai:
SUBSTRING MySQL
Sintassi:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Ci sono 2 modi in cui possiamo usare la funzione SUBSTRING.
Comprendiamo la sintassi prima di immergerci negli esempi.
- {Valore stringa}: Questo è il valore della stringa effettivo o il nome della colonna contenente la stringa su cui lavorare.
- {start_index}: start_index è l'indice da sinistra o destra in cui verrà avviata la sottostringa. I valori possono essere positivi o negativi a seconda che si voglia estrarre String dal lato sinistro o destro, rispettivamente. Questo diventerà più chiaro con gli esempi.
- {contare}: Questo campo è facoltativo e specifica il conteggio dei caratteri dal file start_index campo per il quale è necessario estrarre la sottostringa. Se non menzionato, l'intera stringa a partire dalla corrispondenza start_index sarebbe stato restituito.
Il formato2 è una variante di formato1 tranne per il fatto che è più leggibile utilizzando le parole chiave DA e FOR. Quindi qui, FROM viene utilizzato prima di menzionare il file start_index valore e FOR viene utilizzato prima di menzionare il contare .
Vediamo alcuni esempi per comprendere la funzione SUBSTRING di MySQL.
Prendiamo il valore di input stringa come Guida al test del software
Gli indici delle stringhe appariranno come nella tabella sottostante
1 | Due | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | undici | 12 | 13 | 14 | quindici | 16 | 17 | 18 | 19 | venti | ventuno |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | o | f | t | nel | per | r | e | T | e | S | t | io | n | g | H | e | l | p |
Esempio di SUBSTRING MySQL
Senza contare
Supponiamo di voler estrarre il testo della guida dalla stringa precedente - H ha un indice di 18
Vediamo la query di seguito:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
È importante notare qui che non abbiamo menzionato alcun valore per il contare, ma stiamo ancora ottenendo la stringa corretta - questo perché quando il conteggio viene omesso, viene restituita l'intera stringa a partire dall'indice dato.
In questo caso, se citiamo l'indice iniziale, per esempio, per 'T' (indice 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Come puoi vedere sopra, l'output contiene l'intero testo 'Testing Help'.
Con Conte
Ora, diamo un'occhiata a un esempio in cui menzioneremo il conteggio dei caratteri da restituire.
Supponiamo di voler semplicemente estrarre la parola 'Testing' dalla stringa 'Software Testing Help'. Quindi possiamo menzionare contare come - 7 (che è la lunghezza della parola 'Testing)
Vediamo la query di seguito:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Qui abbiamo descritto sia l'indice iniziale che il conteggio dei caratteri come parte della query per ottenere il risultato richiesto.
Con valori di indice negativi
Finora, per gli esempi che abbiamo visto, abbiamo specificato il file start_index come valore positivo.
Possiamo anche specificare start_index come negativo, il che significa semplicemente che invece di contare da sinistra, il motore MySQL proverà a contare l'indice iniziale dalla fine della stringa.
Vediamo un esempio
Per la nostra 'Guida al test del software' della stringa, aggiungiamo una riga di seguito per identificare gli indici corretti
L | 1 | Due | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | undici | 12 | 13 | 14 | quindici | 16 | 17 | 18 | 19 | venti | ventuno |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | o | f | t | nel | per | r | e | T | e | S | t | io | n | g | H | e | l | p | |||
R | ventuno | venti | 19 | 18 | 17 | 16 | quindici | 14 | 13 | 12 | undici | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | Due | 1 |
Quindi, la riga inferiore qui rappresenta gli indici giusti. Supponiamo ora di voler estrarre la parola 'Testing' utilizzando la funzione SUBSTRING di MySQL con l'indice corretto.
L'indice destro per 'T' in Testing è 12 (e l'indice sinistro è 10)
SELECT SUBSTRING('Software Testing Help', -12, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM -12 FOR 7) as extracted_string; //Output Testing
Come puoi vedere nell'esempio sopra, menzionare gli indici giusti come un valore negativo produrrà comunque lo stesso risultato.
Indice fuori limite
Ora, prova alcuni scenari negativi
- Quando start_index specificato non è esistente: cioè l'indice specificato è fuori dai limiti, quindi l'output sarebbe vuoto.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Quando il conteggio specificato è negativo o superiore alla lunghezza totale della stringa, l'output sarebbe solo il resto della stringa (a partire da start_index specificato).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Puoi vedere sopra, qui il conteggio è stato menzionato come 100, ma la stringa è lunga solo 21 caratteri.
- Proviamo un altro scenario con il conteggio indicato come negativo.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Anche qui non ci saranno errori e ci sarà solo una stringa vuota che sarà l'output.
MySQL SUBSTRING_INDEX
Questa è un'altra variante della funzione SUBSTRING di MySQL.
Qui, invece di menzionare il valore effettivo di start_index, possiamo semplicemente menzionare il carattere e l'indice e il numero di volte in cui il delimitatore deve essere cercato prima di restituire l'output.
Un punto importante da notare qui è il SUBSTRING_INDEX
Funzione MySQL SUBSTRING INDEX:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Input di stringa effettivo o il nome della colonna nella query SELECT.
- Delimitatore: È il carattere o la sottostringa che deve essere cercato per estrarre la stringa rimanente come output. Questo valore fa distinzione tra maiuscole e minuscole, quindi deve essere specificato come appare nella stringa effettiva.
- n: Count of delimiter - ovvero il numero di volte in cui il delimitatore deve essere cercato prima di restituire la stringa.
Comprendiamolo con l'aiuto di alcuni esempi.
Useremo la stessa stringa 'Guida al test del software' della nostra stringa di input per tutti gli esempi che discuteremo nella sezione successiva di seguito.
Alla ricerca di un personaggio
Durante la ricerca del carattere 'T', l'output sarebbe 'Software'. Si noti che verrà incluso anche lo spazio aggiuntivo dopo la parola Software.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Cerca un personaggio che appare più di una volta. Ecco, è - 'e'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
In questo esempio: poiché abbiamo specificato il conteggio come 1, l'output sarebbe String fino a quando non viene raggiunta la prima occorrenza di 'e'.
Cambia il conteggio a 2 per lo stesso carattere 'e'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Ora, possiamo vedere, viene restituita la sottostringa fino alla seconda occorrenza del carattere 'e'.
Prendi un altro esempio per capire che il SUBSTRING INDEX fa distinzione tra maiuscole e minuscole. Proviamo con la lettera 't' invece di 'T'
cos'è un bug nel software
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Alla ricerca di una stringa
Possiamo usare la funzione SUBSTRING INDEX per cercare una stringa invece di un carattere. Cerchiamo la parola 'Test'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
Ricerca di una stringa non esistente
Utilizzo di SUBSTRING INDEX con una stringa che non esiste.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
L'output potrebbe essere un po 'inaspettato qui. Ma poiché MySQL Engine non riesce a trovare la corrispondenza richiesta, restituisce l'intera stringa come output.
Ricerca di caratteri o stringhe in ordine inverso
Analogamente alla funzione SUBSTRING, la funzione SUBSTRING INDEX consente anche di avere il conteggio indicato come numeri negativi. Ciò significa che, invece di spostarsi da sinistra a destra, MySQL Engine proverà a trovare una corrispondenza da destra a sinistra.
Comprendi questo con l'aiuto di alcuni esempi.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
Nell'esempio sopra, puoi vedere che il delimitatore è 'T' mentre il conteggio è -1. Quindi l'output sarebbe Sottostringa da destra fino a quando non si ottiene la prima corrispondenza per la lettera 'T'.
Applicazioni della funzione SUBSTRING di MySQL
Generalmente usiamo le funzioni MySQL String durante l'interrogazione dei dati da 1 o più tabelle. Può essere utilizzato per dividere i valori in una colonna o semplicemente per visualizzare i valori essenziali secondo le necessità.
Esempio: Supponiamo di avere una tabella dei dettagli dei dipendenti composta da ID, nome e indirizzo.
E la colonna dell'indirizzo ha il formato: {HouseNo}, {StreetName}
Di seguito è riportato lo script per creare una tabella e inserire dati fittizi:
CREATE TABLE employee_details (name VARCHAR(100), address VARCHAR(100), age INT); INSERT INTO employee_details values ('Akash Malhotra', '22,Defence Colony', 24), ('Steve Wilson','12/4,Wilson Street',28), ('Monica Singh','190,Smith Lane',32);
Usa la funzione SUBSTRING di MySQL per avere l'estensione numero di casa estratto dalla colonna dell'indirizzo come mostrato di seguito.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Produzione:
nome | house_no | indirizzo | età |
---|---|---|---|
Akash malhotra | 22 | 22, Colonia di difesa | 24 |
Steve Wilson | 12/4 | 12/4, Wilson Street | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
Nella query sopra, puoi vedere che abbiamo utilizzato la funzione SUBSTRING_INDEX per ottenere il numero civico dalla colonna dell'indirizzo e abbiamo utilizzato ',' come delimitatore.
Simile a questo, ci possono essere molte applicazioni in cui vorremmo estrarre la stringa per recuperare alcune informazioni significative da un input di stringa più grande o dal valore della colonna.
Domande frequenti
D # 1) Quale funzione MySQL restituisce la posizione della prima occorrenza di una SUBSTRING nella stringa?
Risposta: MySQL fornisce 2 funzioni per restituire o estrarre una SUBSTRING da un dato valore di stringa o colonna.
- SUBSTRING
Esempio:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- INDICE SUBSTRING
Esempio:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
D # 2) Cos'è SUBSTRING_INDEX in MySQL?
Risposta: La funzione SUBSTRING_INDEX è una variante della funzione SUBSTRING. Mentre nella normale funzione SUBSTRING devi menzionare l'indice come numero nella stringa di input, per la funzione SUBSTRING_INDEX, puoi menzionare un carattere o una sottostringa più piccola da cercare.
Lettura suggerita = >> Tutorial MySQL COUNT
Conclusione
In questo tutorial, abbiamo imparato a conoscere le funzioni SUBSTRING e SUBSTRING_INDEX di MySQL. Entrambe le funzioni estraggono una sottostringa rispetto alla stringa di input data ma funzionano in modo leggermente diverso.
SUBSTRING si aspetta l'indice come i numeri effettivi, mentre SUBSTRING_INDEX può avere il delimitatore specificato come carattere o valore di stringa, quindi il motore MySQL può eseguire l'estrazione in base alla stringa o al carattere corrispondente richiesto.
Entrambe queste funzioni sono ampiamente utilizzate quando una colonna contenente più informazioni può essere estratta in sottocolonne utilizzando la logica di estrazione delle stringhe basata su requisiti appropriati.
Lettura consigliata
- Esercitazione sulle stringhe in C # - Metodi sulle stringhe con esempi di codice
- Metodo Java substring () - Tutorial con esempi
- Tutorial sul metodo Java String contains () con esempi
- Il metodo compareTo della stringa Java con esempi di programmazione
- Funzioni stringa in C ++: getline, sottostringa, lunghezza della stringa e altro
- Funzioni di conversione di stringhe C ++: da stringa a int e da int a stringa
- Funzioni stringa Python
- Funzioni MySQL CONCAT e GROUP_CONCAT con esempi