to NULL or not to NULL this is the question

09/11/2004 - 23:53 por Jose Luis | Informe spam
En primer lugar saludos al gupo.

En segundo lugar una consulta acerca de un tema sobre los valores null y sql

Estoy trabajando con mssql server developer realizando el cambio de un
programa de ficheros planos a sql,
es la primera vez que trabajo con una base de datos sql despues de años
trabajando con ficheros 'normales',
y la primera duda que me surge es acerca de los valores null

por lo visto hasta ahora los valores null nos complican la vida a la hora de
realizar consultas,
calculos y demas operaciones
ejemplo 1) si sumo varias columnas numericas y una vale null el resultado es
null
ejemplo 2) al realizar comparaciones de cadenas de caracteres una cadena con
valor null
no es lo mismo que una cadena en blanco,etc,etc

la idea que he tenido y seguro que se le ha ocurrido a todos los que han
pasado por esto antes que yo es la siguiente:
iniciar todos los campos con un valor en blanco del tipo de dato que
corresponda
esto es definir en la base de datos como predeterminado todos los campos
de caracteres como '', y los numericos como 0,
pero que hago con los de fecha ?
no estoy seguro si es una buena idea, o si es mejor dejar el valor null y
cargar con el escribiendo en cada consulta
( Campo IS NULL OR Campo = '' )
si sql tiene el valor null sera por algo,
o no ?

Gracias.

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
10/11/2004 - 00:44 | Informe spam
Depende de la semántica de tus datos. Se considera al valor NULL como "valor
desconocido", en algunos sistemas tiene sentido y en otros no. Si tienes un
dato de tipo char, entonces tienes estas posibilidades:

1. Que el dato sea conocido, valiendo 'algo' o que seal string nulo '' (dos
comillas simples).

2. Que el dato sea desconocido, no ha sido ingresado a la base de datos.
Este es el valor NULL.

Importante notar que '' es un string nulo, es el valor nulo del dominio de
los strings pero NO ES DESCONOCIDO. Mientras que NULL es un valor QUE NO SE
CONOCE. Por lo tanto no debe considerarse en las operaciones.

Hay implementaciones donde se usan valores conocidos como '' o -1 o 9999 o
99/99/99 cosas por el estilo para indicar valores desconocidos o especiales
para los procesos. En mi opinión no es una buiena práctica en las bases de
datos.

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Jose Luis" wrote in message
news:
Mostrar la cita
#2 Jose Luis
10/11/2004 - 08:15 | Informe spam
Gracias por la informacion.
En mi caso en los campos caracter y numericos solo necesito saber si el
usuario introdujo un valor o si lo dejo en blanco, luego los valores null
solo me complican la vida pues debo comprobar dos posibles valores para un
campo sin datos ( en blanco y null ), por lo que en estos casos optare por
iniciar todos los campos a su valor en blanco ( '' y 0 )
en cuanto a los de fecha dejare el valor null para comprobar la ausencia de
fecha ya que creo que es la unica forma de comprobarlo en este caso
Mi pregunta era si esta idea de iniciar todos los campos por defecto es una
practica corriente o si tiene luego a la hora de desarrollar un programa
algun 'efecto secundario'

"Gustavo Larriera [MVP]" escribió en el mensaje
news:
Mostrar la cita
"valor
Mostrar la cita
un
Mostrar la cita
(dos
Mostrar la cita
SE
Mostrar la cita
especiales
Mostrar la cita
hora
Mostrar la cita
resultado
Mostrar la cita
y
Mostrar la cita
#3 ulises
10/11/2004 - 14:37 | Informe spam
De acuerdo con el excelente apunte de Gustavo, pero usaría
el término "ausencia de valor" en lugar de "valor
desconocido", como opinión personal si vas a inicializar
siempre tus campos está demás que declares los campos como
NULL, define como NOT NULL y agrega un DEFAULT a la columna.

Saludos,
Ulises

Mostrar la cita
necesito saber si el
Mostrar la cita
los valores null
Mostrar la cita
valores para un
Mostrar la cita
casos optare por
Mostrar la cita
comprobar la ausencia de
Mostrar la cita
este caso
Mostrar la cita
por defecto es una
Mostrar la cita
desarrollar un programa
Mostrar la cita
escribió en el mensaje
Mostrar la cita
valor NULL como
Mostrar la cita
otros no. Si tienes
Mostrar la cita
string nulo ''
Mostrar la cita
la base de datos.
Mostrar la cita
nulo del dominio de
Mostrar la cita
un valor QUE NO
Mostrar la cita
operaciones.
Mostrar la cita
como '' o -1 o 9999 o
Mostrar la cita
desconocidos o
Mostrar la cita
práctica en las bases de
Mostrar la cita
no otorga ningun
Mostrar la cita
warranties, and confers
Mostrar la cita
los valores null y
Mostrar la cita
el cambio de un
Mostrar la cita
sql despues de años
Mostrar la cita
valores null
Mostrar la cita
complican la vida a la
Mostrar la cita
vale null el
Mostrar la cita
caracteres una cadena
Mostrar la cita
todos los que han
Mostrar la cita
tipo de dato que
Mostrar la cita
predeterminado todos los
Mostrar la cita
dejar el valor null
Mostrar la cita
#4 Jose Luis
10/11/2004 - 14:46 | Informe spam
exactamente esa es la estrategia

campos numericos: no permitir null, default 0
campos de caracteres: no permitir null, default ''
campos de fecha: permitir null

me parece lo mas logico y sencillo, simplifica el trabajo posterior con los
datos en consultas, actualizaciones, etc.


"ulises" escribió en el mensaje
news:4fb301c4c72a$5f934f60$
De acuerdo con el excelente apunte de Gustavo, pero usaría
el término "ausencia de valor" en lugar de "valor
desconocido", como opinión personal si vas a inicializar
siempre tus campos está demás que declares los campos como
NULL, define como NOT NULL y agrega un DEFAULT a la columna.

Saludos,
Ulises

Mostrar la cita
necesito saber si el
Mostrar la cita
los valores null
Mostrar la cita
valores para un
Mostrar la cita
casos optare por
Mostrar la cita
comprobar la ausencia de
Mostrar la cita
este caso
Mostrar la cita
por defecto es una
Mostrar la cita
desarrollar un programa
Mostrar la cita
escribió en el mensaje
Mostrar la cita
valor NULL como
Mostrar la cita
otros no. Si tienes
Mostrar la cita
string nulo ''
Mostrar la cita
la base de datos.
Mostrar la cita
nulo del dominio de
Mostrar la cita
un valor QUE NO
Mostrar la cita
operaciones.
Mostrar la cita
como '' o -1 o 9999 o
Mostrar la cita
desconocidos o
Mostrar la cita
práctica en las bases de
Mostrar la cita
no otorga ningun
Mostrar la cita
warranties, and confers
Mostrar la cita
los valores null y
Mostrar la cita
el cambio de un
Mostrar la cita
sql despues de años
Mostrar la cita
valores null
Mostrar la cita
complican la vida a la
Mostrar la cita
vale null el
Mostrar la cita
caracteres una cadena
Mostrar la cita
todos los que han
Mostrar la cita
tipo de dato que
Mostrar la cita
predeterminado todos los
Mostrar la cita
dejar el valor null
Mostrar la cita
Ads by Google
Search Busqueda sugerida