mysql substring substring_index functions with examples
Obteniu més informació sobre les funcions MySQL SUBSTRING i SUBSTRING_INDEX i el seu ús amb diversos exemples:
La funció MySQL Substring s’utilitza per extreure una substring o una cadena de part contra la cadena d’entrada. Com el seu nom indica, la funció Subcadena funciona amb una entrada de cadena i retorna una subcadena més petita amb les opcions especificades.
També coneixerem una altra variant de SUBSTRING anomenada SUBSTRING_INDEX. Aquesta funció accepta el valor del caràcter o de la cadena com a delimitador i executa una cerca contra el valor delimitador donat.
També veurem alguns exemples per entendre com es poden utilitzar aquestes funcions mentre es consulten dades com a part de les consultes SELECT.
Què aprendreu:
SUBSTRING MySQL
Sintaxi:
// format 1 SELECT SUBSTRING('{String Value}', {start_index}, {count}); // format 2 SELECT SUBSTRING('{String Value}'FROM {start_index} for {count});
Hi ha dues maneres en què podem utilitzar la funció SUBSTRING.
Anem a entendre la sintaxi abans d’endinsar-nos en els exemples.
- {Valor de la cadena}: Aquest és el valor de la cadena real o el nom de la columna que conté la cadena a treballar.
- {start_index}: start_index és l’índex d’esquerra o dreta on s’iniciaria la subcadena. Els valors poden ser positius o negatius en funció de si volem extreure la cadena del costat esquerre o dret, respectivament. Això quedarà més clar amb els exemples.
- {count}: Aquest camp és opcional i especifica el recompte de caràcters del fitxer index_inici camp per al qual cal extreure la subcadena. Si no s'esmenta, llavors tota la cadena començant per la coincidència index_inici seria retornat.
El format2 és una variació del format1, excepte que és més llegible mitjançant paraules clau FROM i FOR. Per tant, aquí s’utilitza FROM abans d’esmentar el fitxer index_inici valor, i FOR s'utilitza abans d'esmentar el fitxer comptar .
Vegem alguns exemples per entendre la funció SUBSTRING de MySQL.
Prenem el valor d'entrada de cadena com a Ajuda de proves de programari
Els índexs de cadena seran els següents:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | o | f | t | dins | a | r | és | T | és | s | t | jo | n | g | H | és | l | pàg |
Exemple de SUBSTRING MySQL
Sense Comte
Suposem que volem extreure el text d’ajuda de la cadena anterior: H té un índex de 18
Vegem la consulta següent:
SELECT SUBSTRING('Software Testing Help', 18) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 18) as extracted_string; // Output Help
És important assenyalar aquí que no hem esmentat cap valor per al comptar, però seguim obtenint la cadena correcta; això es deu al fet que quan s'omet el recompte, es retorna tota la cadena que comença a partir de l'índex donat.
En aquest cas, si esmentem l’índex inicial, per exemple, per a 'T' (índex 10)
SELECT SUBSTRING('Software Testing Help', 10) as extracted_string; //Output Testing Help
Com podeu veure més amunt, la sortida conté tot el text 'Ajuda de proves'.
Amb Count
Vegem ara un exemple en què esmentarem el recompte dels caràcters que es retornaran.
Suposem que només volem extreure la paraula 'Prova' de la cadena 'Ajuda de proves de programari'. A continuació, podem esmentar el recompte com a - 7 (que és la longitud de la paraula 'Prova')
Vegem la consulta següent:
SELECT SUBSTRING('Software Testing Help', 10, 7) as extracted_string; SELECT SUBSTRING('Software Testing Help' FROM 10 FOR 7) as extracted_string; //Output Testing
Aquí hem descrit l’índex inicial i el recompte de caràcters com a part de la consulta per obtenir el resultat requerit.
Amb valors d’índex negatius
Fins ara, per als exemples que hem vist, hem especificat el fitxer index_inici com a valor positiu.
També podem especificar l’índex start_index com a negatiu, el que significa simplement que en lloc de comptar des de l’esquerra, el motor MySQL intentarà comptar l’índex inicial des del final de la cadena.
Vegem un exemple
Per a la nostra cadena 'Ajuda de proves de programari', afegim una fila a continuació per identificar els índexs adequats
L | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S | o | f | t | dins | a | r | és | T | és | s | t | jo | n | g | H | és | l | pàg | |||
R | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Per tant, la fila inferior aquí representa els índexs adequats. Ara suposem que volem extreure la paraula 'Prova' mitjançant la funció SUBSTRING MySQL amb l'índex adequat.
L'índex correcte per a 'T' a les proves és 12 (i l'índex esquerre és 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
Com podeu veure a l'exemple anterior, esmentar els índexs adequats com a valor negatiu seguirà donant el mateix resultat.
Índex fora de límits
Ara, proveu alguns escenaris negatius
- Quan no existeix start_index especificat: és a dir, l’índex especificat està fora dels límits, la sortida quedaria buida.
SELECT SUBSTRING('Software Testing Help', 30, 2) as extracted_string; //output Empty String
- Quan el recompte especificat és negatiu o superior a la longitud total de la cadena, la sortida només seria la resta de la cadena (iniciant-se l’índex start_index especificat).
SELECT SUBSTRING('Software Testing Help', 5, 100) as extracted_string; //output ware Testing Help
Podeu veure més amunt, aquí es va esmentar el recompte com a 100, però la cadena té només 21 caràcters.
- Intentem un altre escenari amb el recompte esmentat com a negatiu.
SELECT SUBSTRING('Software Testing Help', 5, -20) as extracted_string; //output Empty String
Aquí també no hi haurà cap error i només hi haurà una cadena buida que seria la sortida.
MySQL SUBSTRING_INDEX
Aquesta és una altra variant de la funció SUBSTRING de MySQL.
Aquí, en lloc d’esmentar el valor real de start_index, simplement podem esmentar el caràcter i l’índex i el nombre de vegades que s’ha de buscar el delimitador abans de retornar la sortida.
Un punt important a destacar aquí és el SUBSTRING_INDEX
Funció MySQL SUBSTRING INDEX:
SUBSTRING_INDEX({StringValue/Column},delimiter,n)
- {StringValue / Column}: Entrada de cadena real o el nom de la columna a la consulta SELECT.
- Delimitador: És el caràcter o la subcadena que cal buscar per extreure la cadena restant com a sortida. Aquest valor distingeix entre majúscules i minúscules, de manera que s’hauria d’especificar tal com apareix a la cadena real.
- n: Recompte de delimitador, és a dir, el nombre de vegades que s'ha de buscar el delimitador abans de tornar la cadena.
Entenguem això amb l’ajut d’alguns exemples.
Utilitzarem la mateixa cadena 'Ajuda de proves de programari' que la nostra cadena d'entrada per a tots els exemples que tractarem a la següent secció.
Cercant un personatge
Mentre es cerca el caràcter 'T', la sortida seria 'Programari'. Tingueu en compte que també s’inclourà l’espai extra després de la paraula Programari.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', 1) as extracted_string; //Output Software
Cerqueu un personatge que aparegui més d'una vegada. Aquí està, 'e'
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 1) as extracted_string; //Output Softwar
En aquest exemple: ja que hem especificat el recompte com a 1, la sortida seria Cadena fins que s’arribi a la primera aparició de ‘e’.
Canvieu el recompte a 2 per al mateix caràcter 'e'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'e', 2) as extracted_string; //Output Software T
Ara, podem veure, es retorna la cadena fins a la segona aparició del caràcter 'e'.
Agafeu un altre exemple per entendre que l’ÍNDEX SUBSTRING distingeix entre majúscules i minúscules. Intentem amb la lletra 't' en lloc de 'T'
com veure fitxers .bin
SELECT SUBSTRING_INDEX('Software Testing Help', 't', 1) as extracted_string; //Output Sof
Cercant una cadena
Podem utilitzar la funció SUBSTRING INDEX per cercar una cadena en lloc d’un caràcter. Cerquem la paraula 'Proves'.
SELECT SUBSTRING_INDEX('Software Testing Help', 'Testing', 1) as extracted_string; //Output Software
S'està cercant una cadena inexistent
Ús de SUBSTRING INDEX amb una cadena que no existeix.
SELECT SUBSTRING_INDEX('Software Testing Help', 'abc', 1) as extracted_string; //Output Software Testing Help
La sortida podria ser una mica inesperada aquí. Però com que MySQL Engine no troba la coincidència necessària, retorna tota la cadena com a sortida.
Cerqueu caràcters o cadenes en ordre invers
De manera similar a la funció SUBSTRING, la funció SUBSTRING INDEX també permet fer esmentar el recompte com a nombres negatius. Això vol dir que, en lloc de recórrer d’esquerra a dreta, el motor MySQL intentarà trobar una coincidència de dreta a esquerra.
Compreneu-ho amb l’ajut d’alguns exemples.
SELECT SUBSTRING_INDEX('Software Testing Help', 'T', -1) as extracted_string; //Output esting Help
A l'exemple anterior, podeu veure que el delimitador és 'T' mentre que el recompte és -1. Per tant, la sortida seria la subcadena des de la dreta fins que s’obtindrà la primera coincidència de la lletra ‘T’.
Aplicacions de la funció MySQL SUBSTRING
Normalment utilitzem les funcions de cadena MySQL mentre consultem dades d’1 o diverses taules. Es pot utilitzar per dividir valors en una columna o simplement per mostrar els valors essencials segons la necessitat.
Exemple: Suposem que tenim una taula de detalls dels empleats que consta d’identificador, nom i adreça.
I la columna d’adreça té un format: {HouseNo}, {StreetName}
A continuació es mostra l'script per crear una taula i inserir dades fictícies:
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);
Utilitzeu la funció MySQL SUBSTRING per tenir el fitxer número de casa extret de la columna d’adreça tal com es mostra a continuació.
SELECT name, SUBSTRING_INDEX(address,',',1) as house_no, address, age from employee_details
Sortida:
nom | casa_no | adreça | edat |
---|---|---|---|
Akash malhotra | 22 | 22, Colònia de Defensa | 24 |
Steve Wilson | 12/4 | 12/4, carrer Wilson | 28 |
Monica Singh | 190 | 190, Smith Lane | 32 |
A la consulta anterior, podeu veure que hem utilitzat la funció SUBSTRING_INDEX per obtenir el número de casa de la columna d’adreça i hem utilitzat ‘,’ com a delimitador.
De manera similar, hi pot haver moltes aplicacions on vulguem extreure la cadena per obtenir informació significativa d'una entrada de cadena més gran o del valor de la columna.
Preguntes freqüents
Q # 1) Quina funció MySQL retorna la posició de la primera aparició d'un SUBSTRING a la cadena?
Resposta: MySQL proporciona 2 funcions per retornar o extreure un SUBSTRING d'un valor de cadena o columna determinat.
- SUBSTRING
Exemple:
SELECT SUBSTRING('Test Input',1,4) as extracted_string; // Output Test
- ÍNDEX SUBSTRING
Exemple:
SELECT SUBSTRING_INDEX('Test Input','t',1) as extracted_string; //Output Tes
Q # 2) Què és SUBSTRING_INDEX a MySQL?
Resposta: La funció SUBSTRING_INDEX és una variant de la funció SUBSTRING. Mentre que a la funció SUBSTRING normal heu d’esmentar l’índex com a número a la cadena d’entrada, per a la funció SUBSTRING_INDEX podeu mencionar un caràcter o una subcadena més petita que cal cercar.
Lectura suggerida = >> Tutorial MySQL COUNT
Conclusió
En aquest tutorial, hem après sobre les funcions MySQL SUBSTRING i SUBSTRING_INDEX. Les dues funcions extreuen una subcadena contra la cadena d'entrada donada, però funcionen d'una manera lleugerament diferent.
SUBSTRING espera que l'índex sigui el número real, mentre que SUBSTRING_INDEX pot tenir el delimitador especificat com a valor de caràcter o de cadena i, a continuació, el motor MySQL es pot extreure de la cadena o el caràcter corresponent.
Ambdues funcions s’utilitzen en gran mesura en què es pot extreure una columna amb diverses peces d’informació en subcolones mitjançant la lògica d’extracció de cadenes basada en els requisits adequats.
Lectura recomanada
- Tutorial de cadenes C #: mètodes de cadenes amb exemples de codi
- Mètode Java substring (): tutorial amb exemples
- Java String conté () Tutorial de mètode amb exemples
- Mètode Java String compareTo amb exemples de programació
- Funcions de cadena a C ++: getline, subcadena, longitud de cadena i més
- Funcions de conversió de cadenes C ++: cadena a int i int a cadena
- Funcions de cadena de Python
- Funcions MySQL CONCAT i GROUP_CONCAT amb exemples