Tengo la siguiente tabla:
CLIENTE
IDCliente Cliente
IDUsuario IDUsuarioAlta
1
Esteban
1 2
2
Jose
3 1
3
Mario
2 NULL
4
Pedro
NULL 2
5
NULL
1 2
Y quiero hacer un Store que haga un SELECT, pudiendo pasarle todos los
campos de parametro y dependiendo si se paso un valor en un parametro:
que busque por ese valor, si No se paso un valor que lo ignore, si no
se paso ningun valor en los parametros, que sea igual a un SELECT *
FROM TABLA y por último si se pasan varios valores en los parametros,
que busque por todos esos campos y que el resultado coincida con todos
los valores.
Hice algo de todo esto, excepto que tengo problemas cuando el valor en
un campo es NULL. El query que hice es:
declare @IDCliente int
declare @Cliente varchar(50)
declare @IDUsuario int
declare @IDUsuarioAlta int
set @IDcliente = 0
set @Cliente = ''
set @IDUsuario = 0
set @IDUsuarioAlta = 0
select * from cliente
where
IDUsuario = CASE @IDUsuario WHEN 0 THEN IDUsuario ELSE @IDUsuario END
AND IDUsuarioAlta = CASE @IDUsuarioAlta WHEN 0 THEN IDUsuarioAlta
ELSE @IDUsuarioAlta END
AND idCliente = CASE @idCliente WHEN 0 THEN idCliente ELSE @idCliente
END
AND Cliente LIKE '%' + CASE @Cliente WHEN '' THEN Cliente ELSE
@Cliente END + '%'
El problema es simple, ese query, no trae los registros que tienen
algun campo con valor NULL (por ejemplo el Cliente con IDCLiente = 5,
tiene el campo Cliente igual a NULL y no lo trae, tambien el IDCliente
4, que tiene el campo IDUsuario igual a NULL).
Que se puede hacer para que traiga esos registros y cuando se pasan
valores no los traiga.
Gracias, saludos.
Leer las respuestas