ero confuso dietro il ragionamento della seguenti:Perché PostgreSQL non restituiscono valori nulli quando la condizione è <> vero
SELECT * FROM table WHERE avalue is null
Restituisce x numero di righe in cui 'Avalue' è nullo
SELECT * FROM table WHERE avalue <> true
non righe di ritorno in cui 'valore' è nullo.
mio ragionamento (che sembra essere errata) è che null
è un valore unico (non è nemmeno uguale a null
) significa che dovrebbe mostrare nel set di risultati non è uguale a true
entrambi.
Immagino che si possa sostenere che dicendo column <> value
si implichi che la colonna abbia un valore, ignorando quindi i valori null
del tutto.
Qual è il ragionamento alla base di questo ed è lo stesso in altri DB SQL comuni?
Il mio ragionamento (ipotesi) mi dice che questo è contro-intuitivo e volevo sapere perché.
[Tre valori logica] (http://en.wikipedia.org/wiki/Three-valued_logic). Supponi che le uniche risposte possibili a '<>' siano 'true' o' false' - mentre in SQL, c'è l'opzione di 'unknown'. Questo è negli standard. (Confusamente, MySQL confonde 'UNKNOWN' e' NULL' così là, i possibili risultati sono 'TRUE',' FALSE' e 'NULL') –
SQL Server lo fa allo stesso modo. – Fanda
Come dice Damien ... Questo è comunemente chiamato la logica dei tre valori. – Kuberchaun