mysql like tutorial with syntax
Aquest tutorial explica la concordança de patrons mitjançant l'operador MySQL LIKE:
La concordança de patrons és una característica important en gairebé tots els llenguatges de programació, com ara Java / C # / Python, etc., que majoritàriament aprofiten l'ús d'Expressions regulars per a la concordança de patrons amb una entrada de cadena determinada.
MySQL proporciona un operador fàcil d'utilitzar anomenat LIKE, que es podria utilitzar per fer coincidir els valors de cadena amb patrons especificats i que són útils per a la consulta de grans conjunts de dades.
Què aprendreu:
M'agrada MySQL
Sintaxi:
L'operador LIKE s'utilitza juntament amb la clàusula WHERE en una consulta SELECT.
En una consulta simple, la sintaxi es veu a continuació.
SELECT {column_names} (*) FROM {table_name} WHERE {column_with_string_value} LIKE {match_pattern}
Els diferents components d'aquesta sintaxi s'expliquen de la següent manera:
- {column_names}: Aquests són els noms de columna que es mostraran com a sortida de la consulta SELECT. Aquests valors poden ser * per seleccionar totes les columnes o noms separats per comes de columnes individuals.
- {table_name}: Aquest és el nom de la taula on cal executar la consulta.
- {column_with_string_value}: Aquesta és la columna els valors de la qual s’han d’executar amb el patró especificat. Tingueu en compte que qualsevol comparació es fa en una columna que es pot convertir en cadena.
- {match_pattern}: Aquesta és l'expressió de concordança amb la qual cal comparar els valors de les columnes. Una mostra de patrons de coincidència pot ser: SM% ’. Això coincidiria amb tots els valors de columna que comencen per SM. Exemple: SMART, SMELL, SMOKE, etc.
De manera similar a aquesta consulta, l'operador LIKE es pot utilitzar fins i tot amb consultes complexes amb JOINS, etc. ja que LIKE és només un operador de comparació i es pot utilitzar sempre que sigui possible la comparació de valors de columna.
Nota: De manera similar a LIKE, també podem utilitzar la seva variant negada, que és ‘NOT LIKE’. Per tant, en aquest cas, en lloc de retornar els resultats coincidents, les consultes amb l’operador ‘NO M’AGRADA’ retornaran resultats que no coincideixin.
Patrons de coincidència de MySQL
LIKE Operator es pot utilitzar juntament amb 2 tipus de patrons. Aquests es mostren a la taula següent:
Patró | |
---|---|
% (Percentatge) | Coincideix amb qualsevol nombre de caràcters (inclòs cap caràcter) |
_ (Subratllat) | Coincideix amb un sol personatge |
Ara veurem alguns exemples amb els dos patrons.
% Patró de coincidència
El patró% s'utilitza quan voleu coincidir amb 0 o més caràcters després o abans de la seva col·locació.
Per exemple: si voleu fer coincidir una cadena 'it' d'una columna amb noms d'empleats. Suposem que hi ha noms com: Amit, Anchit, Arpit, Nikita, Smith, etc. Podem veure que tots els noms tenen la subcadena 'it'. Però el seu posicionament és diferent.
Suposem que el nom de la columna és noms i el nom de la taula és noms_estudiant.
Utilitzeu els següents scripts de creació de dades de mostra per emplenar la base de dades:
CREATE TABLE student_names (name VARCHAR(100)); INSERT INTO student_names VALUES('Amit'),('Ankit'),('Smith'),('Nikita'),('Mohit');
Vegem com podem utilitzar el patró% Match.
SELECT * FROM student_names WHERE name LIKE '%it%'
Sortida:
nom |
---|
Amit |
Ankit |
Smith |
Nikita |
Mohit |
Ara el que vol dir és que pot coincidir amb una cadena que tingui la subcadena 'it' en qualsevol lloc i que hi pugui haver qualsevol nombre de caràcters abans i després del partit. Podeu veure que tots els noms coincidents es retornen com a sortida.
Torneu a escriure la consulta perquè coincideixin només els noms que acaben amb la subcadena 'it'.
SELECT * FROM student_names WHERE name LIKE '%it'
Així, doncs, hem eliminat el signe '%' final i hem col·locat la cadena 'it' al final. Aquest patró permetria qualsevol nombre de caràcters abans que 'it', però la cadena hauria d'acabar amb la subcadena 'it'.
Resultat de la consulta anterior:
nom |
---|
Amit |
Ankit |
Mohit |
Nota: Aquí és important tenir en compte que el patró esmentat amb el caràcter «%» no distingeix entre majúscules i minúscules. Així doncs, per a l’exemple anterior, en lloc de «% it», podríem haver utilitzat «% IT» o «% It», la producció encara hauria estat la mateixa.
_Patró de coincidència
Vegem ara com podem utilitzar el patró de coincidència '_'. Sabem que ‘_’ permet exactament un personatge.
Suposem que volem consultar tots els noms de 5 lletres de la mateixa taula (nom_estudiant).
Per utilitzar l’adaptador de patrons ‘_’ en aquest cas, hem especificat cinc _ (subpunts) juntament amb el patró LIKE que només coincidirà amb els noms que tinguin una longitud de 5 caràcters.
SELECT * FROM student_names WHERE name LIKE '_____'
Sortida:
nom |
---|
Ankit |
Mohit |
Smith |
Vegem un altre exemple. Suposem que volem trobar els 5 noms de lletres que acabin amb la subcadena 'it'
SELECT * FROM student_names WHERE name LIKE '___it'
Aquí hem utilitzat 3 '_' (subratllats) i la subcadena real que cal coincidir.
Sortida:
nom |
---|
Ankit |
Mohit |
Smith |
Combinació de% i _ patró
En aquesta secció, discutirem com podem fer coincidir els concordants de patrons% i _.
el millor reproductor de DVD gratuït per a DVD xifrats
Suposem que volem trobar tots els noms que tinguin una subcadena 'it' i que puguin tenir exactament 2 caràcters després de la paraula 'it'
SELECT * FROM student_names WHERE name LIKE '%it_'
Aquí hem combinat els patrons de coincidència% i _ per trobar la concordança exacta.
Sortida:
nom |
---|
Smith |
Nikita |
Utilitzant NOT LIKE
NOT LIKE és la negació exacta del que retorna l’operador LIKE. és a dir, retornarà tots els registres / files que no coincideixin amb l’expressió de concordança de patrons.
Exemple: Suposem que volem trobar tots els noms que no tinguin 4 caràcters.
SELECT * FROM student_names WHERE name NOT LIKE '____'
Sortida:
quin és el millor servei de correu electrònic per utilitzar
nom |
---|
Ankit |
Smith |
Nikita |
Mohit |
Podeu veure a la sortida anterior, només retorna aquells noms que no tinguin 4 caràcters.
Ús de MySQL LIKE amb caràcter ESCAPE
Aquí veurem com podem utilitzar els caràcters ESCAPE juntament amb la combinació de patrons.
Suposem que en una situació hipotètica tenim noms que realment contenen caràcters% i _ i volem trobar aquests noms, llavors hem de coincidir realment amb% & _. Això es pot aconseguir mitjançant un personatge d'escapament.
Nota: El valor per defecte del caràcter d’escapament és ‘’ (barra invertida)
Afegiu algunes dades a les taules student_names que contenen noms amb% i _ caràcters.
INSERT INTO student_names VALUES('Darre%n'),('Julia_Roberts'),('Dane_Sherman%');
A continuació es mostren alguns exemples per entendre-ho millor.
# 1) Cerqueu tots els noms que tinguin un signe%.
SELECT * FROM student_names WHERE name LIKE '%\%%'
Sortida:
nom |
---|
Darre% n |
Dane_Sherman% |
# 2) Cerqueu tots els noms que tinguin un signe _
SELECT * FROM student_names WHERE name LIKE '%\_%'
Sortida:
nom |
---|
Julia_Roberts |
Dane_Sherman% |
En els dos exemples anteriors, podeu veure que hem utilitzat un caràcter d’escapament per esmentar els caràcters% i _; és a dir, per coincidir amb un caràcter% mateix hem utilitzat un caràcter d’escapament abans del signe%, és a dir, com ara «\%»
Utilitzant un personatge d'escapada que escolliu
Ara intentem ampliar l'exemple anterior.
MySQL us permet especificar el vostre propi caràcter ESCAPE que hauria d’utilitzar MySQL mentre executeu la cerca de concordança de patrons.
Intentem actualitzar el caràcter Escape a '!' En lloc del valor predeterminat ''
SELECT * FROM student_names WHERE name LIKE '%!_%' ESCAPE '!'
Sortida:
nom |
---|
Julia_Roberts |
Dane_Sherman% |
A l'exemple anterior, hem substituït el caràcter d'escapament per '!' I hem utilitzat el mateix al paràmetre de patrons '%! _%', On volem fer coincidir un caràcter '_' al nom.
Preguntes freqüents
P # 1) Què significa %% a SQL?
Resposta: '%%' no coincidirà amb cap cosa específica. És equivalent a tenir només un 1% de caràcter. Si voleu coincidir amb el mateix caràcter '%' al valor de la columna, podeu utilitzar-lo amb un caràcter d'escapament que tingui un valor per defecte de '.
Suposem que voleu coincidir amb un valor de columna que tingui un caràcter '%', podeu escriure una coincidència de patró com - COM '% %%' (observeu una barra invertida addicional abans del percentatge mitjà (%).
Q # 2) Què és un comodí a MySQL?
Resposta: MySQL LIKE Operator funciona amb 2 caràcters comodins a MySQL per aconseguir diferents maneres de coincidir patrons.
Aquests són:
- % - Això coincidiria amb qualsevol nombre de caràcters (inclòs el zero)
- _ - Això coincidiria exactament amb un personatge
P # 3) Com puc escriure una consulta LIKE a MySQL?
Resposta: LIKE és un operador simple que s'utilitza generalment juntament amb la clàusula WHERE en una consulta SELECT. S'utilitza per fer coincidir els valors de les columnes amb el patró especificat.
Exemple: Suposem que hi ha una taula que conté detalls_del_empleat i que té una columna anomenada adreça que conté el número de casa, el nom del carrer, etc. Voleu esbrinar tots els empleats que tinguin el carrer definit com a 'Oxford Lane' com a adreça.
Podem utilitzar l’operador LIKE per escriure aquesta consulta.
SELECT * FROM employee_details WHERE address LIKE '%Oxford Lane%'
Tingueu en compte que els patrons de la cadena són cas insensible mentre es coincideix amb l'expressió de coincidència especificada.
Q # 4) Com especificar un personatge Escape diferent juntament amb l'operador LIKE?
Resposta: MySQL proporciona una manera d'especificar un caràcter d'escapament personalitzat que substituiria el predeterminat, és a dir,
Aquí teniu un exemple que canviaria el caràcter d'escapament a '!' Per a l'execució de la consulta.
SELECT * FROM employee_details WHERE address LIKE '%!_%' ESCAPE '!'
A la consulta anterior, hem esmentat '!' Com a caràcter d'escapament i hem utilitzat el mateix a l'expressió de coincidència.
P # 5) Com es pot fer coincidir un% o un caràcter real amb l'operador LIKE?
Resposta: Els caràcters com% i _ són caràcters comodins especials que, quan realment han de coincidir-se com a part de la cadena, s’han d’escapar.
El caràcter d’escapament per defecte és ‘’ i s’ha d’utilitzar just abans d’esmentar el caràcter comodí.
Suposem que volem fer coincidir el caràcter '_' amb un valor de columna donat, i llavors podem escriure l'expressió de coincidència com a - M'AGRADA '%\_%'
Conclusió
En aquest tutorial, hem après sobre les diferents maneres en què podem utilitzar l’operador LIKE (o la versió negada, és a dir, NO M’AGRADA).
També hem discutit els caràcters comodins admesos, és a dir, _ i%, i com es poden escapar si han de formar part de la cadena per cercar-la o fer-la coincidir.
L'operador LIKE és una potent funcionalitat proporcionada per MySQL i s'utilitza generalment per filtrar registres mentre es fan consultes sobre grans conjunts de dades.
Lectura recomanada
- Tutorial MySQL Create View amb exemples de codi
- MySQL UNION: tutorial complet amb exemples d'unió
- Tutorial MySQL Create Table amb exemples
- MySQL Insereix a la taula: insereix sintaxi i exemples de sentències
- Sintaxi d'ordres Unix Cat, opcions amb exemples
- C # Regex Tutorial: què és una expressió regular de C #
- Tutorial de regex de C ++: expressions regulars en C ++ amb exemples
- Tutorial de Java Regex amb exemples d'expressions regulars