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.
 

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:
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 similares