viernes, 30 de octubre de 2009

SQL SERVER

SQL SERVER

IS NULL, IS NOT NULL, <>,=.

Realizando algunas pruebas con una consulta, la cual me arrojaba datos, que ya no deberían mostrarse en el GRID, me puse a verificar las tablas directo en el Gestor de BD’s e hice unas consultas sobre una de las tablas involucradas de la siguiente forma para verificar que el campo no es nulo:

SELECT CVE_T_DOCTO FROM [SIMAN].[SIMAN].[DOCUMENTO]
WHERE CVE_T_DOCTO <> NULL AND num_publicacion like '%MSS-%'

Y sorpresa, no me marcó ningún error, pero no mostró la información.

Asi es que mejor lo hice de esta forma:

SELECT CVE_T_DOCTO FROM [SIMAN].[SIMAN].[DOCUMENTO]
where NOT(cve_t_docto IS NULL) AND num_publicacion like '%MSS-%'


Ó

Tambien lo pueden realizar así:

SELECT CVE_T_DOCTO
FROM [SIMAN].[SIMAN].[DOCUMENTO]
where cve_t_docto IS NOT NULL and num_publicacion like '%MSS-%'


Explicación:

El null es que se desconoce el valor, siginifica que el campo no tiene valor

y la cadena vacia (‘’)es que se conoce y es vacio.
Indica que hay una cadena vacía, pero cadena al fin. O sea, existe algo: una cadena.De esto se deriva que no puedas usar condiciones (where) preguntando si "campo = null", sino que existe la sentencia especial "campo is null".


NULL ni siquiera ocupa espacio, es como una variable declarada pero no utilizada.

La diferencia entre un campo vacío y uno nulo es la “virginidad” del campo. Un campo nulo está “vírgen”. Una vez que se carga un valor (cualquier valor) deja de ser nulo. Luego, por más que quieras vaciarlo no volverá a ser virgen (nulo).

Es este caso yo estoy utilizando SQL SERVER 2005.


No olviden dejar sus comentarios.

4 comentarios:

Fisico dijo...

Bastante interesante y útil tus observaciones, muchas gracias el Fisico.

Anónimo dijo...

OK , muchas gracias Ernesto por compartir tus conocimientos, me sirvio de mucho ya que lo que hacia era comparar el campo = null.

Gracias y saludos

Javier dijo...

En Oracle "" es lo mismo que null, no hay tal cosa como null y vacio, así que es válido anmbas formas, aunque siempre uso IS NOT NULL :-p

Un abrazo :-)

Unknown dijo...

Hola Ernesto!!!

Que gusto ver que estes publicando experiencias, te saludo con mucho cariño tu amiga de bachillerato, a ver si te hallo en el facebook.

Lorena