2010-12-30 10 views

risposta

14

Sì, è possibile ... Il concetto di valore NULL è una comune fonte di confusione per i nuovi arrivati ​​a SQL, che spesso pensano che NULL è la stessa di una stringa vuota '', o un valore pari a zero .

Questo non è il caso. Concettualmente, NULL significa "un valore sconosciuto mancante" ed è trattato in modo leggermente diverso dagli altri valori. Ad esempio, per verificare NULL, non è possibile utilizzare gli operatori di confronto aritmetico come =, < o <> nella maggior parte dei DBMS.

14

Depends su DBMS.

Oracle senza: '' e nullo sono identici

SQL Server sì: '' e nulli sono valori diversi.

+0

+1. Mi è venuta davvero la testa quando sono passato a Oracle da MySQL. 'where code = ''' non restituisce più le "stringhe vuote" ... – Ronnis

1

Come ha detto Daniel, sì, è possibile inserire la stringa di lunghezza zero in un campo NOT NULL (eccetto Oracle). Tuttavia, se si desidera escludere le stringhe di lunghezza zero, così, è possibile aggiungere un vincolo:

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

maggior parte dei database moderni hanno un operatore di espressioni regolari o una funzione è possibile utilizzare per i vincoli pure, ma l'esatto la sintassi varia da database a database.

Problemi correlati