Principales respuestas
Consulta con sentencia LIKE en MYSQL

Pregunta
-
Buenas tardes tengo la siguiente tabla
Y deseo encontrar los registros que se parezcan al parámetro que mando, la consulta que tengo es la siguiente
SELECT * FROM persona WHERE nombres LIKE CONCAT('%','Diana Antuna','%') OR apellido_paterno LIKE CONCAT('%','Diana Antuna','%') OR apellido_materno LIKE CONCAT('%','Diana Antuna','%')
Por que no funciona la sentencia like?? Se supone que el parámetro Diana Antuna si esta en la tabla.
Agradeceria su ayuda amigos, gracias!!!!
- Editado AlexAlonso90 lunes, 17 de julio de 2017 20:22
Respuestas
-
El escenario mas simple se produce cuando intentas buscar la cadena de caracteres 'Diana Antuna' en una expresión que contiene la concatenación de las columnas 'nombres', 'apellido_paterno', y 'apellido_materno': 'Diana Antuna Jacobo', por ejemplo:
SET @Buscar = 'Diana Antuna'; SELECT * FROM persona WHERE concat(nombres, ' ', apellido_paterno, ' ', apellido_materno) LIKE concat('%', @Buscar, '%');
Pero, ¿qué sucede si intentas buscar la cadena de caracteres 'Antuna Diana'?, la consulta anterior no retornará ningún resultado. Si deseas considerar los casos expuestos debes cambiar la consulta de selección:
SET @Buscar = 'Antuna Diana'; SELECT * FROM persona WHERE concat(nombres, ' ', apellido_paterno, ' ', apellido_materno) LIKE concat('%', substring_index(@Buscar, ' ', 1), '%') OR concat(nombres, ' ', apellido_paterno, ' ', apellido_materno) LIKE concat('%', substring_index(@Buscar, ' ', -1), '%');
Considera realizar los cambios necesarios en caso la expresión de búsqueda contenga mas de dos palabras.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta AlexAlonso90 martes, 18 de julio de 2017 22:53
Todas las respuestas
-
CREATE PROCEDURE sp1 (busqueda VARCHAR(100)) BEGIN set @var=busqueda; set @var ='Diana Antuna'; SELECT * FROM persona WHERE CONCAT(nombres,space(1),apellido_paterno,space(1),apellido_materno) LIKE concat ('%',@var,'%') END;
Corregido
Pasa los puntos prro v:
- Editado D A M N 1 S e l f lunes, 17 de julio de 2017 22:27
-
-
-
CREATE PROCEDURE sp1 (busqueda VARCHAR(100)) BEGIN set @var=busqueda; set @var ='Diana Antuna'; SELECT * FROM persona WHERE CONCAT(nombres,space(1),apellido_paterno,space(1),apellido_materno) LIKE concat ('%',@var,'%') END;
Pasa los puntos prro v:
- Propuesto como respuesta D A M N 1 S e l f lunes, 17 de julio de 2017 20:55
-
El escenario mas simple se produce cuando intentas buscar la cadena de caracteres 'Diana Antuna' en una expresión que contiene la concatenación de las columnas 'nombres', 'apellido_paterno', y 'apellido_materno': 'Diana Antuna Jacobo', por ejemplo:
SET @Buscar = 'Diana Antuna'; SELECT * FROM persona WHERE concat(nombres, ' ', apellido_paterno, ' ', apellido_materno) LIKE concat('%', @Buscar, '%');
Pero, ¿qué sucede si intentas buscar la cadena de caracteres 'Antuna Diana'?, la consulta anterior no retornará ningún resultado. Si deseas considerar los casos expuestos debes cambiar la consulta de selección:
SET @Buscar = 'Antuna Diana'; SELECT * FROM persona WHERE concat(nombres, ' ', apellido_paterno, ' ', apellido_materno) LIKE concat('%', substring_index(@Buscar, ' ', 1), '%') OR concat(nombres, ' ', apellido_paterno, ' ', apellido_materno) LIKE concat('%', substring_index(@Buscar, ' ', -1), '%');
Considera realizar los cambios necesarios en caso la expresión de búsqueda contenga mas de dos palabras.
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.- Marcado como respuesta AlexAlonso90 martes, 18 de julio de 2017 22:53