Consulta con campos nulos

05/04/2006 - 22:04 por jcac | Informe spam
Hola foro,

Tengo los siguiente

Tabla 1
Campo1, Campo2, Campo3
1, 0, Null
2, 3, 5
3, 10, Null
4, 3, Null
5, 10, 10
...

Deseo filtrar por el campo2 y campo3, pero si no doy valor para busqueda del
campo3 que me devuelva todos inclusie los nulos, es decir

Declare @Campo2 int, @Campo3 int
Select @Campo2 = 3, @Campo3 = null
Select * From tabla1 Where Campo2 = @Campo2 and Campo3 = IsNull(@Campo3,
Campo3)

Pero solo me devuelve
Campo1, Campo2, Campo3
2, 3, 5

y quisiera que me devuelva:
Campo1, Campo2, Campo3
2, 3, 5
4, 3, Null

Saludos

Preguntas similare

Leer las respuestas

#6 Isaias
06/04/2006 - 01:23 | Informe spam
Noldis

Creo que nuestro amigo, lo quiere en una sola instruccion (Sin IF):

CREATE TABLE #PASO (CAMPO1 INT IDENTITY(1,1), CAMPO2 INT, CAMPO3 INT)
INSERT INTO #PASO VALUES(0, NULL)
INSERT INTO #PASO VALUES(3, 5)
INSERT INTO #PASO VALUES(10, NULL)
INSERT INTO #PASO VALUES(3, NULL)
INSERT INTO #PASO VALUES(10, 10)
SELECT * FROM #PASO
Declare @Campo2 int, @Campo3 int
Select @Campo2 = 10, @Campo3 = NULL
SELECT CAST(@Campo3 AS VARCHAR)
Select *
From #PASO
Where Campo2 = @Campo2
and ISNULL(CAMPO3, 1) >= ISNULL(@Campo3,1)


Saludos
IIslas


"Noldis Chumacero" escribió:

jcac,


DECLARE @campo3 INT
DECLARE @campo2 int
Select @Campo2 = 3, @Campo3 = null
IF @campo3 is null
SELECT * FROM Tabla1 WHERE Campo2=@Campo2
ELSE
SELECT * FROM Tabla1 WHERE
Campo2=@Campo2 AND Campo3 = @Campo3



Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"jcac" escribió en el mensaje
news:
> Hola foro,
>
> Tengo los siguiente
>
> Tabla 1
> Campo1, Campo2, Campo3
> 1, 0, Null
> 2, 3, 5
> 3, 10, Null
> 4, 3, Null
> 5, 10, 10
> ...
>
> Deseo filtrar por el campo2 y campo3, pero si no doy valor para busqueda
> del campo3 que me devuelva todos inclusie los nulos, es decir
>
> Declare @Campo2 int, @Campo3 int
> Select @Campo2 = 3, @Campo3 = null
> Select * From tabla1 Where Campo2 = @Campo2 and Campo3 = IsNull(@Campo3,
> Campo3)
>
> Pero solo me devuelve
> Campo1, Campo2, Campo3
> 2, 3, 5
>
> y quisiera que me devuelva:
> Campo1, Campo2, Campo3
> 2, 3, 5
> 4, 3, Null
>
> Saludos
>



Respuesta Responder a este mensaje
#7 jcac
06/04/2006 - 01:56 | Informe spam
Isaias,

Muchas gracias por tu tiempo y paciencia, pero solo una duda mas, por que
indicas mayor igual???

Saludos


"Isaias" escribió en el mensaje
news:
Noldis

Creo que nuestro amigo, lo quiere en una sola instruccion (Sin IF):

CREATE TABLE #PASO (CAMPO1 INT IDENTITY(1,1), CAMPO2 INT, CAMPO3 INT)
INSERT INTO #PASO VALUES(0, NULL)
INSERT INTO #PASO VALUES(3, 5)
INSERT INTO #PASO VALUES(10, NULL)
INSERT INTO #PASO VALUES(3, NULL)
INSERT INTO #PASO VALUES(10, 10)
SELECT * FROM #PASO
Declare @Campo2 int, @Campo3 int
Select @Campo2 = 10, @Campo3 = NULL
SELECT CAST(@Campo3 AS VARCHAR)
Select *
From #PASO
Where Campo2 = @Campo2
and ISNULL(CAMPO3, 1) >= ISNULL(@Campo3,1)


Saludos
IIslas


"Noldis Chumacero" escribió:

jcac,


DECLARE @campo3 INT
DECLARE @campo2 int
Select @Campo2 = 3, @Campo3 = null
IF @campo3 is null
SELECT * FROM Tabla1 WHERE Campo2=@Campo2
ELSE
SELECT * FROM Tabla1 WHERE
Campo2=@Campo2 AND Campo3 = @Campo3



Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"jcac" escribió en el mensaje
news:
> Hola foro,
>
> Tengo los siguiente
>
> Tabla 1
> Campo1, Campo2, Campo3
> 1, 0, Null
> 2, 3, 5
> 3, 10, Null
> 4, 3, Null
> 5, 10, 10
> ...
>
> Deseo filtrar por el campo2 y campo3, pero si no doy valor para
> busqueda
> del campo3 que me devuelva todos inclusie los nulos, es decir
>
> Declare @Campo2 int, @Campo3 int
> Select @Campo2 = 3, @Campo3 = null
> Select * From tabla1 Where Campo2 = @Campo2 and Campo3 =
> IsNull(@Campo3,
> Campo3)
>
> Pero solo me devuelve
> Campo1, Campo2, Campo3
> 2, 3, 5
>
> y quisiera que me devuelva:
> Campo1, Campo2, Campo3
> 2, 3, 5
> 4, 3, Null
>
> Saludos
>



Respuesta Responder a este mensaje
#8 Isaias
06/04/2006 - 02:59 | Informe spam
Para poder cumplir con la condicion de ISNULL, solo por eso.

Si es NULL, entonces convierte a 1 y hace una igualacion de >=, si no,
entonces trae lo que tenga.

Al menos hice algunas pruebas y funciono.

Saludos
IIslas


"jcac" escribió:

Isaias,

Muchas gracias por tu tiempo y paciencia, pero solo una duda mas, por que
indicas mayor igual???

Saludos


"Isaias" escribió en el mensaje
news:
> Noldis
>
> Creo que nuestro amigo, lo quiere en una sola instruccion (Sin IF):
>
> CREATE TABLE #PASO (CAMPO1 INT IDENTITY(1,1), CAMPO2 INT, CAMPO3 INT)
> INSERT INTO #PASO VALUES(0, NULL)
> INSERT INTO #PASO VALUES(3, 5)
> INSERT INTO #PASO VALUES(10, NULL)
> INSERT INTO #PASO VALUES(3, NULL)
> INSERT INTO #PASO VALUES(10, 10)
> SELECT * FROM #PASO
> Declare @Campo2 int, @Campo3 int
> Select @Campo2 = 10, @Campo3 = NULL
> SELECT CAST(@Campo3 AS VARCHAR)
> Select *
> From #PASO
> Where Campo2 = @Campo2
> and ISNULL(CAMPO3, 1) >= ISNULL(@Campo3,1)
>
>
> Saludos
> IIslas
>
>
> "Noldis Chumacero" escribió:
>
>> jcac,
>>
>>
>> DECLARE @campo3 INT
>> DECLARE @campo2 int
>> Select @Campo2 = 3, @Campo3 = null
>> IF @campo3 is null
>> SELECT * FROM Tabla1 WHERE Campo2=@Campo2
>> ELSE
>> SELECT * FROM Tabla1 WHERE
>> Campo2=@Campo2 AND Campo3 = @Campo3
>>
>>
>>
>> Ing. Noldis Chumacero Chávez
>> Departamento de Sistemas
>> AeroSur S.A.
>> Santa Cruz de la Sierra, Bolivia
>> Telf. 3364446(236) 77074919
>> "jcac" escribió en el mensaje
>> news:
>> > Hola foro,
>> >
>> > Tengo los siguiente
>> >
>> > Tabla 1
>> > Campo1, Campo2, Campo3
>> > 1, 0, Null
>> > 2, 3, 5
>> > 3, 10, Null
>> > 4, 3, Null
>> > 5, 10, 10
>> > ...
>> >
>> > Deseo filtrar por el campo2 y campo3, pero si no doy valor para
>> > busqueda
>> > del campo3 que me devuelva todos inclusie los nulos, es decir
>> >
>> > Declare @Campo2 int, @Campo3 int
>> > Select @Campo2 = 3, @Campo3 = null
>> > Select * From tabla1 Where Campo2 = @Campo2 and Campo3 =
>> > IsNull(@Campo3,
>> > Campo3)
>> >
>> > Pero solo me devuelve
>> > Campo1, Campo2, Campo3
>> > 2, 3, 5
>> >
>> > y quisiera que me devuelva:
>> > Campo1, Campo2, Campo3
>> > 2, 3, 5
>> > 4, 3, Null
>> >
>> > Saludos
>> >
>>
>>
>>



Respuesta Responder a este mensaje
#9 jcac
06/04/2006 - 19:15 | Informe spam
Gracias Isaias.

Saludos

"Isaias" escribió en el mensaje
news:
Para poder cumplir con la condicion de ISNULL, solo por eso.

Si es NULL, entonces convierte a 1 y hace una igualacion de >=, si no,
entonces trae lo que tenga.

Al menos hice algunas pruebas y funciono.

Saludos
IIslas


"jcac" escribió:

Isaias,

Muchas gracias por tu tiempo y paciencia, pero solo una duda mas, por que
indicas mayor igual???

Saludos


"Isaias" escribió en el mensaje
news:
> Noldis
>
> Creo que nuestro amigo, lo quiere en una sola instruccion (Sin IF):
>
> CREATE TABLE #PASO (CAMPO1 INT IDENTITY(1,1), CAMPO2 INT, CAMPO3 INT)
> INSERT INTO #PASO VALUES(0, NULL)
> INSERT INTO #PASO VALUES(3, 5)
> INSERT INTO #PASO VALUES(10, NULL)
> INSERT INTO #PASO VALUES(3, NULL)
> INSERT INTO #PASO VALUES(10, 10)
> SELECT * FROM #PASO
> Declare @Campo2 int, @Campo3 int
> Select @Campo2 = 10, @Campo3 = NULL
> SELECT CAST(@Campo3 AS VARCHAR)
> Select *
> From #PASO
> Where Campo2 = @Campo2
> and ISNULL(CAMPO3, 1) >= ISNULL(@Campo3,1)
>
>
> Saludos
> IIslas
>
>
> "Noldis Chumacero" escribió:
>
>> jcac,
>>
>>
>> DECLARE @campo3 INT
>> DECLARE @campo2 int
>> Select @Campo2 = 3, @Campo3 = null
>> IF @campo3 is null
>> SELECT * FROM Tabla1 WHERE Campo2=@Campo2
>> ELSE
>> SELECT * FROM Tabla1 WHERE
>> Campo2=@Campo2 AND Campo3 = @Campo3
>>
>>
>>
>> Ing. Noldis Chumacero Chávez
>> Departamento de Sistemas
>> AeroSur S.A.
>> Santa Cruz de la Sierra, Bolivia
>> Telf. 3364446(236) 77074919
>> "jcac" escribió en el mensaje
>> news:
>> > Hola foro,
>> >
>> > Tengo los siguiente
>> >
>> > Tabla 1
>> > Campo1, Campo2, Campo3
>> > 1, 0, Null
>> > 2, 3, 5
>> > 3, 10, Null
>> > 4, 3, Null
>> > 5, 10, 10
>> > ...
>> >
>> > Deseo filtrar por el campo2 y campo3, pero si no doy valor para
>> > busqueda
>> > del campo3 que me devuelva todos inclusie los nulos, es decir
>> >
>> > Declare @Campo2 int, @Campo3 int
>> > Select @Campo2 = 3, @Campo3 = null
>> > Select * From tabla1 Where Campo2 = @Campo2 and Campo3 >> >> > IsNull(@Campo3,
>> > Campo3)
>> >
>> > Pero solo me devuelve
>> > Campo1, Campo2, Campo3
>> > 2, 3, 5
>> >
>> > y quisiera que me devuelva:
>> > Campo1, Campo2, Campo3
>> > 2, 3, 5
>> > 4, 3, Null
>> >
>> > Saludos
>> >
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida