Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Isnull

Estas en el tema de Isnull en el foro de SQL Server en Foros del Web. Hola, estoy teniendo el siguiente error: An expression of non-boolean type specified in a context where a condition is expected, near 'group'. el codigo contiene ...
  #1 (permalink)  
Antiguo 22/04/2009, 11:43
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Isnull

Hola, estoy teniendo el siguiente error:


An expression of non-boolean type specified in a context where a condition is expected, near 'group'.


el codigo contiene esto:
... and isnull(cur_dicta.codigo,0) ...


El error me dice que debería poner en la segunda expresión un dato booleano, al parecer. En fin... el cero es booleano...

Alguien tiene alguna idea?
  #2 (permalink)  
Antiguo 22/04/2009, 13:57
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Respuesta: Isnull

isnull es una funcion que se usa en expresiones de dos partes, es decir, te falta comparalo o asignarlo con algo mas...


por ejemplo

Código:
isnull (cur_data.codigo, 0) = 0

or

SET @variable = isnull(@variable, 0)
Una expresion booleana seria por ejemplo

Código:

If @variable Is null
Begin
    ....
End


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 22/04/2009, 18:29
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Isnull

Gracias, pero no entiendo exactamente cómo integrar eso en mi consulta. El isnull es parte del WHERE...

La consulta (que anda bien en Access) es esta:

select cur_cursos.codigo, cur_cursos.titulo from cur_cursos left join cur_dicta on cur_cursos.codigo = cur_dicta.curso) left join cur_oradores on cur_dicta.orador = cur_oradores.codigo where cur_cursos.privado = 0 and cur_oradores.confirmado <> 0 group by cur_cursos.codigo, cur_cursos.titulo, cur_cursos.descripcion
union all
select cur_cursos.codigo, cur_cursos.titulo from cur_cursos left join cur_dicta on cur_cursos.codigo = cur_dicta.curso where cur_cursos.privado = 0 and isnull(cur_dicta.codigo) group by cur_cursos.codigo, cur_cursos.titulo, cur_cursos.descripcion

Cuando la pase a Sql Server, me tiró un error, que según entendí, tenía que agregar una segunda expresión diciendo qué numero traerme si de hecho es nulo, así que lo cambié por isnull(cur_dicta.codigo,0)

¿Cómo aplico lo que me dijiste acá?

Gracias
  #4 (permalink)  
Antiguo 22/04/2009, 18:47
 
Fecha de Ingreso: febrero-2009
Ubicación: Buenos Aires
Mensajes: 42
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Isnull

Ok, era simplemente poner "and cur_dicta.curso is null "

Gracias de todos modos!
  #5 (permalink)  
Antiguo 22/04/2009, 18:52
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Respuesta: Isnull

Perfecto!


Asi es, no siempre aplica en SQL lo que funciona en Access, ya que son motores distintos los que interpretan la consulta...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:54.