Posso inserire una stringa vuota in un campo non nullo?Posso inserire una stringa vuota in un campo NOT NULL?
insert into xyz(A,B) values(1,''); // is this possible if B is NOT NULL?
Posso inserire una stringa vuota in un campo non nullo?Posso inserire una stringa vuota in un campo NOT NULL?
insert into xyz(A,B) values(1,''); // is this possible if B is NOT NULL?
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.
Depends su DBMS.
Oracle senza: '' e nullo sono identici
SQL Server sì: '' e nulli sono valori diversi.
+1. Mi è venuta davvero la testa quando sono passato a Oracle da MySQL. 'where code = ''' non restituisce più le "stringhe vuote" ... – Ronnis
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.
Tranne che '//' non è un separatore di commenti SQL standard. ;-) –