none
Realizar Busqueda con más de un criterio en sentencia Like % +@parametro+% RRS feed

  • Pregunta

  • Hola amigos, estoy armando una busqueda con diferentes parametros, para buscar por patologia o por nombres tanto el primero como el segundo,  el problema lo obtengo cuando busco solamente  por patologia, no me muestra resultados, no se a que se debe esto.

     El objetivo es buscar , teniendo como nombre de ejemplo :"DANIEL FERNANDO "  tanto [FERNANDO] como [DANIEL] y si no se busca por nombre, buscar por patologia mostrando todos los registros  que poseean la patologia seleccionada. tengo lel siguiente:

    @idPatologia int = NULL,
    @nombre varchar(100)
    
    
    SELECT 
    ex.cod_examen
    pat.nombre,
    paci.nombre
    
    FROM EXAMEN as ex
    INNER JOIN PATOLOGIA as pat ON pat.id_patologia= ex.id_patologia
    INNER JOIN PACIENTE as paci ON EXAMEN_PACIENTE.id_paciente = paci.id_paciente
    			 
    WHERE  
    ex.id_patologia =  CASE WHEN (isnull(@idPatologia  '')='') OR @idPatologia  = 0 THEN  ex.id_patologia  ELSE @idPatologia  END 
    AND paci.nombre LIKE '%' + IsNull(@nombre,paci.nombre)  +'%'
    			 
    ORDER BY ex.cod_examen DESC
    De antemano muchas gracias.


    • Editado Jose Alrey martes, 7 de febrero de 2017 5:01
    martes, 7 de febrero de 2017 4:59

Respuestas

  • Jose Alrey,

    Intenta con los siguientes cambios:

    CREATE PROCEDURE dbo.NombreProcedimiento
        @idPatologia int = NULL,
        @nombre varchar(100) = NULL
    AS
    BEGIN
        SELECT 
    	   ex.cod_examen
    	   pat.nombre,
    	   paci.nombre
        FROM 
    	   EXAMEN ex
    	   INNER JOIN PATOLOGIA pat ON ex.id_patologia = pat.id_patologia
    	   INNER JOIN PACIENTE paci ON ex.id_paciente = paci.id_paciente			 
        WHERE  
    	   (ex.id_patologia = @idPatologia OR @idPatologia IS NULL)
    	   AND (paci.nombre LIKE '%' + @nombre + '%' OR @nombre IS NULL)
        ORDER BY 
    	   ex.cod_examen DESC
    END


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Jose Alrey martes, 7 de febrero de 2017 6:21
    martes, 7 de febrero de 2017 5:22

Todas las respuestas

  • Jose Alrey,

    Intenta con los siguientes cambios:

    CREATE PROCEDURE dbo.NombreProcedimiento
        @idPatologia int = NULL,
        @nombre varchar(100) = NULL
    AS
    BEGIN
        SELECT 
    	   ex.cod_examen
    	   pat.nombre,
    	   paci.nombre
        FROM 
    	   EXAMEN ex
    	   INNER JOIN PATOLOGIA pat ON ex.id_patologia = pat.id_patologia
    	   INNER JOIN PACIENTE paci ON ex.id_paciente = paci.id_paciente			 
        WHERE  
    	   (ex.id_patologia = @idPatologia OR @idPatologia IS NULL)
    	   AND (paci.nombre LIKE '%' + @nombre + '%' OR @nombre IS NULL)
        ORDER BY 
    	   ex.cod_examen DESC
    END


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Jose Alrey martes, 7 de febrero de 2017 6:21
    martes, 7 de febrero de 2017 5:22
  • Muchas gracias maestro, se ha resuelto mi consulta, saludos.
    martes, 7 de febrero de 2017 6:23