SQL Server - Comparar valor nulo con valor de campo

 
Vista:

Comparar valor nulo con valor de campo

Publicado por Francisco (1 intervención) el 07/06/2005 08:35:38
Deseo saber como puedo evitar en Sql Server /.0 el problema que actualmente tengo al comparar un valor nulo con un valor de campo. Actualmente si hago esto :
"select case when null <> "hola" then 'Distinto' else 'Igual'" me devuelve igual.
Me gustaria evitarel estar controlando esto con la funcion isnull(campo, 0) ya que este tipo de comparaciones la hago muy a menudo en triggers , y me gustaría corregirlo en alguna opción de configuración del servidor.

Seguro que me podeis ayudar ;-)

Gracias ;-)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Comparar valor nulo con valor de campo

Publicado por marcelo (16 intervenciones) el 07/06/2005 13:07:30
Hola:
En general, la configuración por defecto es:

"En una expresión un valor nulo, anula toda la expresión". Así:

-------------------------------------------------Con expresiones de cadena
declare @xx1 varchar(10),
@xx2 varchar(10)
select @xx1 = 'hola',
@xx2 = null

select @xx1 + @xx2
-----mostrará null

Existe una función ISNULL(). donde se podría reemplazar
select @x21 + isnull(@xx2,' como estas?')
-----mostrará 'hola como estas?'

---------------------------------------------------Lo mismo con numéricos

declare @xx1 int,
@xx2 int
select @xx1 = 10,
@xx2 = null

select @xx1 + @xx2
-----mostrará null

select @x21 + isnull(@xx2,15)
-----mostrará 25

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Comparar valor nulo con valor de campo

Publicado por Liliana (151 intervenciones) el 07/06/2005 13:51:39
Hola Francisco,
En MS SQL Server, el tratamiento de los NULOS tiene varios capítulos escritos.
En el caso de tu comparación, la forma correcta de escribirla sería:
SELECT CASE WHEN 'hola' IS NOT NULL THEN 'distinto' ELSE 'igual' END
'Hola' no es DISTINTO de NULO y tampoco es IGUAL, simplemente NO ES NULO.
NULO no es nada. Te recomendaría leer la ayuda en pantalla sobre este tema o algún buen libro de SQL, esto pretende ser solo una ayuda.
Más allá de este caso puntual, si tenés manejo de tu información y para evitar este tipo de situaciones sobre valores de tus tablas, te sugeriría evaluar la posibilidad de actualizar los datos existentes con valores cero, espacios o lo que consideres conveniente, además de no permitir nulos desde la definición de las tablas.
Espero que te sirva mi experiencia,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar