Vi har endnu en logisk operator i SQL Server. Du har faktisk allerede mødt NOT et par gange. Se evt. lektionen om NULL, hvor NOT bliver brugt. I kombination med andre logiske operatorer, som AND og OR, er NOT i stand til at forfine dine betingelser i SQL-forespørgslerne.
Den logiske operator NOT
Denne operator vender resultatet af et udsagn fra SAND til FALSK eller omvendt. Eksempler:
1=2 – er FALSK
NOT 1=2 – er SAND
1<>2 – er SAND
NOT 1<>2 – er FALSK
NOT-operatoren bruges på denne måde i SQL:
SELECT Navn, Bynavn FROM Kunde
WHERE NOT Bynavn = 'Viborg'
Husk dog i forbindelse med NULL, skrives NOT efter IS:
SELECT Navn, Email FROM Kunde
WHERE Email IS NOT NULL
Dette er faktisk også gyldigt og giver samme resultat:
SELECT Navn, Email FROM Kunde
WHERE NOT Email IS NULL
Du kan også udføre NOT på et udtryk, som allerede indeholder NOT, altså dobbelt negation:
SELECT Navn, Email FROM Kunde
WHERE NOT Email IS NOT NULL
Eller, hvis du har lyst til at gå amok i dobbeltnegation:
SELECT Navn, Bynavn FROM Kunde
WHERE NOT NOT Bynavn = 'Viborg'
Brug af NOT med AND og OR
Tingene kan blive lidt mere komplicerede, når vi blander NOT ind i andre betingelser med AND eller OR. Lad os finde varer, der hedder noget med Boble og som ikke koster mellem 1 og 2 kr.
Første forsøg er forkert, da NOT kun påvirker første betingelse:
SELECT * FROM Vare WHERE Varebetegnelse LIKE 'Boble%' AND NOT Pris > 1 AND Pris < 2
I stedet skal vi indkapsle prisbetingelsen i parentes, hvorved NOT påvirker hele udtrykket:
SELECT * FROM Vare WHERE Varebetegnelse LIKE 'Boble%' AND NOT (Pris > 1 AND Pris < 2)
Prøv selv
- Find kunder ikke i Nyborg
- Find kunder i Nyborg med gyldig email
- Find papkasser, hvor prisen ikke er mellem 4 og 6 kr.