NOT i forespørgsel

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.