Buscar filas para encontrar subcadenas en MySQL
-
Método 1: encontrar una cadena/subcadena usando el comodín
%
-
Método 2: encontrar una cadena/subcadena usando la función
LOCATE()
- Conclusiones
En algunas situaciones, debe buscar una cadena o subcadena en una tabla.
Por ejemplo, quieres saber cuántos usuarios de Gmail hay en la tabla employee
. Otro ejemplo es buscar todos los firstname
que empiecen por Je
en la tabla employee
.
Aquí, la búsqueda de una cadena o subcadena aparece en la imagen, y hay diferentes formas de buscar. POSITION()
para SQL estándar, LOCATE()
y comodines %
para MySQL, y INSTR()
para Oracle.
Aprenderemos los métodos compatibles con MySQL y observaremos cuál es la mejor y más fácil forma de buscar filas para encontrar subcadenas en MySQL. Puede mirarlos todos y luego decidir qué método es mejor en su caso.
Método 1: encontrar una cadena/subcadena usando el comodín %
%
El comodín se usa para sustituir uno o varios caracteres en una cadena. Este comodín se usa con el operador LIKE
y el operador LIKE
se usa en la cláusula WHERE
.
Para practicar, creamos una nueva tabla llamada employee
. Puede crear el mismo y completarlo con datos utilizando el código de muestra que se proporciona a continuación.
De esta manera, estaremos en la misma página mientras aprendemos.
#Create employee table
CREATE TABLE employee(
id int not null primary key,
firstname varchar(60) not null,
lastname varchar(60) not null,
gender varchar(30) not null,
city varchar(40) not null,
email varchar(60) not null
);
#Insert data into employee table.
INSERT INTO employee VALUES
(1,'James','Robert','Male','London','jrober@gmail.com'),
(2,'Mary','Patricia','Female','Berlin','patricia@gmail.com'),
(3,'John','Michael','Male','Paris','johnmichael@yahoo.com'),
(4,'Jennifer','Linda','Female','Lisbon','jennifer@hotmail.com'),
(5,'William','David','Male','Rome','wdwilliam@gmail.com'),
(6,'Elizabeth','Barbara','Female','Dublin','elibarbara011@yahoo.com'),
(7,'Richard','Joseph','Male','Oslo', 'richard@gmail.com'),
(8,'Susan','Jessica','Female','Hamburg','susan01@yahoo.com'),
(9,'Thomas','Charles','Male','Texas', 'thomas.charles@hotmail.com'),
(10,'Karen','Nancy','Female','Washington','karenofficial@gmail.com');
SELECT * FROM employee;
Producción:
Entendamos considerando diferentes escenarios para buscar filas para encontrar una cadena o subcadena usando el comodín %
.
Escenario 1: Encuentra todos los usuarios de Gmail
. Es decir, tenemos que encontrar una subcadena en el email
.
SELECT firstname, lastname from employee where email LIKE '%@gmail.com';
La consulta SQL anterior seleccionará firstname
y lastname
de la tabla employee
cuya cadena email
contenga gmail.com
.
Producción:
Escenario 2: Seleccionar aquellos apellidos que terminen con la letra a
. Aquí encontraremos una cadena, el apellido
.
SELECT lastname FROM employee WHERE lastname LIKE '%a';
Producción:
Escenario 3: Busquemos los nombres de las city
que comienzan con L
, terminan con n
y tienen cuatro caracteres entre ellos. Un guión bajo (_
) es para un carácter.
SELECT city FROM employee WHERE city LIKE 'L____n';
Producción:
Puede aprender más caracteres comodín aquí.
Método 2: encontrar una cadena/subcadena usando la función LOCATE()
La función LOCATE
devuelve la primera aparición de la subcadena en una cadena. Devuelve 0
si no puede encontrar la subcadena dentro de la cadena original.
Esta función realiza una búsqueda que no distingue entre mayúsculas y minúsculas, lo que significa que HELLO
, y hello
son lo mismo para la función LOCATE
. Se utiliza con la siguiente sintaxis.
LOCATE(substring, string, start)
En la sintaxis anterior, los dos primeros parámetros denominados subcadena y cadena son obligatorios, pero el tercer parámetro denominado start
es opcional.
Es posible que tenga una pregunta sobre cómo se verá la salida. Entendamos a través de la siguiente imagen.
SELECT LOCATE("hotmail", email) FROM employee;
Producción:
Conclusiones
Llegamos a la conclusión de que diferentes plataformas de bases de datos admiten diferentes métodos. LOCATE()
, y el comodín es compatible con MySQL.
Aprendimos formas compatibles con MySQL de buscar una cadena o subcadena con la ayuda de ejemplos. Y observe la salida para entender.