2010-12-30 37 views

Respuesta

14

Sí se puede ... El concepto del valor NULL es una fuente común de confusión para los recién llegados a SQL, que a menudo piensan que NULL es lo mismo que una cadena vacía '', o un valor de cero .

Este no es el caso. Conceptualmente, NULL significa "un valor desconocido que falta" y se trata de forma algo diferente a otros valores. Por ejemplo, para probar NULL, no puede usar los operadores de comparación aritmética como =, <, o <> en la mayoría de los DBMS.

14

Depende del DBMS.

Oracle sin: '' y nulos son idénticos

SQL Server sí: '' y nulos son valores diferentes.

+0

+1. Me golpeé la cabeza con fuerza cuando cambié a Oracle de MySQL. 'where code = ''' ya no devuelve las "cadenas vacías" ... – Ronnis

1

Como dijo Daniel, sí, puede insertar la cadena de longitud cero en un campo NOT NULL (excepto en Oracle). Sin embargo, si desea descartar cadenas de longitud cero, así, se puede agregar una restricción:

ALTER TABLE xyz ADD CONSTRAINT CHECK (b LIKE '_%'); 

La mayoría de las bases de datos modernas tienen un operador de expresión regular o función se puede utilizar para las restricciones así, pero la exacta la sintaxis varía de la base de datos a la base de datos.

Cuestiones relacionadas