Citat:
Ursprungligen postat av atitaranta-
Jag noterar en skillnad vid negativa sökningar.
where a != 'z' OR b != 'z' ger träffar både på tomma fält och NULL-fält, medan
where 'z' not in (a,b)
inte returnerar rader där a och/eller b är NULL. Det går visserligen att lätt att lösa genom att lägga till "or a is null or b is null", men det leder mig ändå till frågan om jag kommer att stöta mycket sådant här där det är en väsentlig skillnad mellan NULL och tomma fält vartefter jag lär mig och vilket som i så fall är bäst att använda generellt för fält som saknar värde.
Ja, du kommer givetvis stöta på nulls i samma utsträckning som det förekommer.
Det är ingen "skillnad på tomma fält och alla andra värden", det är nullables som du måste hantera. Det uppenbara och enklaste är givetvis att det inte förekommer och när det förekommer så måste du alltså ta hänsyn till det.
OR och negation är en klassiker, undvik helst det, speciellt i flera led.
Ofta kan du vända på hela steken och köra utan negering och sedan köra negering på hela uttrycket vilket ofta är tydligare och enklare att förstå.
Ex.
Är (Bananen inte grön eller bananen inte brun eller bananen inte svart)
Inte (Bananen är grön eller bananen är brun eller bananen är svart)
Hellre/oftare/lättare med/tydligare/... "selektering" än "exkludering"