none
Consulta con sentencia LIKE en MYSQL RRS feed

  • 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!!!!


    lunes, 17 de julio de 2017 20:21

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
    lunes, 17 de julio de 2017 22:16

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:





    lunes, 17 de julio de 2017 20:27
  • No funciona amigo, me devuelve una consulta vacia
    lunes, 17 de julio de 2017 20:31
  • Hola,

    SELECT * FROM persona WHERE nombres LIKE CONCAT('%','Diana','%') OR apellido_paterno LIKE CONCAT('%','Antuna','%') OR apellido_materno LIKE CONCAT('%','Antuna','%')

    Creo que esa va a funcionar.


    Victor Koch

    lunes, 17 de julio de 2017 20:47
  • 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:

    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
    lunes, 17 de julio de 2017 22:16