
Filteren met WHERE
Introductie
Tot nu toe hebben we gezien hoe je data kunt selecteren (ophalen) met SELECT en FROM:
| id | name | year | rank |
|---|---|---|---|
| 10920 | Aliens | 1986 | 8.2 |
| 17173 | Animal House | 1978 | 7.5 |
| 18979 | Apollo 13 | 1995 | 7.5 |
| ... | ... | ... | ... |
- Nu gaan we kijken hoe we een gefilterde selectie op kunnen halen.
- Dit is een selectie die aan bepaalde condities/criteria moet voldoen.
- Hiervoor gaan we gebruik maken van
WHERE.
1. Filteren op kolommen met getallen
We gaan verschillende soorten filters toepassen op kolommen met getallen.
1.1. Getallen gelijk aan een waarde
Met WHERE en het = teken kunnen we filteren op daar waar een getal gelijk is aan een bepaalde waarde:
| id | name | year | rank |
|---|---|---|---|
| 111813 | Few Good Men, A | 1992 | 7.5 |
| 276217 | Reservoir Dogs | 1992 | 8.3 |
1.2. Getallen groter of kleiner dan een waarde
Met >= kunnen we filteren op getallen die groter of gelijk aan een waarde zijn.
| id | name | year | rank |
|---|---|---|---|
| 30959 | Batman Begins | 2005 | (NULL) |
| 124110 | Garden State | 2004 | 8.3 |
| 176712 | Kill Bill: Vol. 2 | 2004 | 8.2 |
Vergelijkbaar kun je andere operators gebruiken als >, <, >=, <=.
1.3. Getallen ongelijk aan een waarde
Met <> kunnen we filteren op getallen die niet gelijk zijn aan de opgegeven waarde.
| id | name | year | rank |
|---|---|---|---|
| 10920 | Aliens | 1986 | 8.2 |
| 17173 | Animal House | 1978 | 7.5 |
| 18979 | Apollo 13 | 1995 | 7.5 |
| ... | ... | ... | ... |
1.4. Getallen gelijk aan waarden uit een lijst
Met IN kunnen we een reeks waarden opgeven. We filteren vervolgens op de voorkomendheid van deze waarden.
| id | name | year | rank |
|---|---|---|---|
| 30959 | Batman Begins | 2005 | (NULL) |
| 124110 | Garden State | 2004 | 8.3 |
| 176712 | Kill Bill: Vol. 2 | 2004 | 8.2 |
1.5. Getallen tussen 2 waarden
Met BETWEEN en AND kunnen we 2 waarden opgeven. We filteren vervolgens op de voorkomendheid van tussenliggende waarden.
Let op: Beide waarden die je opgeeft zijn inclusief in de filtering.
| id | name | year | rank |
|---|---|---|---|
| 176711 | Kill Bill: Vol. 1 | 2003 | 8.4 |
| 194874 | Lost in Translation | 2003 | 8 |
| 224842 | Mystic River | 2003 | 8.1 |
| 238072 | Oceanâ€s Eleven | 2001 | 7.5 |
| 256630 | Pirates of the Caribbean | 2003 | (NULL) |
| 300229 | Shrek | 2001 | 8.1 |
| 350424 | Vanilla Sky | 2001 | 6.9 |
1.6. Getallen met missende waarden
Met ISNULL filteren we op missende waarden.
| id | name | year | rank |
|---|---|---|---|
| 30959 | Batman Begins | 2005 | (NULL) |
| 256630 | Pirates of the Caribbean | 2003 | (NULL) |
2. Filteren op kolommen met tekst
We gaan verschillende soorten filters toepassen op kolommen met tekst.
2.1. Tekst gelijk aan een waarde
Met het = teken filteren we op tekst gelijk aan een waarde.
| id | name | year | rank |
|---|---|---|---|
| 333856 | Titanic | 1997 | 6.9 |
2.2. Tekst gelijk aan waarden uit een lijst
Met IN geven we een reeks teksten op. Vervolgens filteren we op de voorkomendheid van waarden uit de reeks.
Let op: tekst geef je op met enkele quotes:
'<tekst>'.
| id | name | year | rank |
|---|---|---|---|
| 109093 | Fargo | 1996 | 8.2 |
| 210511 | Memento | 2000 | 8.7 |
2.3. Tekst matcht een patroon: de eerste letter
Met LIKE geven we een patroon op. Vervolgens filteren we op het matchen van waarden met dit patroon.
Met patroon '<letter>%' matchen we op de eerste letter. Het %-teken is een wildcard, dit betekent dat elke waarde die na <letter> komt een geldige match zal geven. Voorbeeld:
- Het patroon M% heeft een match voor de waardes 'Moon' en 'Master'
- Het patroon Ma% alleen geldige match heeft met 'Master'
- Het patroon M heeft alleen een match met waardes die exact gelijk zijn aan 'M'.
| id | name | year | rank |
|---|---|---|---|
| 207992 | Matrix, The | 1999 | 8.5 |
| 210511 | Memento | 2000 | 8.7 |
| 224842 | Mystic River | 2003 | 8.1 |
2.4. Tekst matcht een patroon: de laatste letter
Met patroon '%<letter>' matchen we op de laatste letter.
| id | name | year | rank |
|---|---|---|---|
| 147603 | Hollow Man | 2000 | 5.3 |
| 194874 | Lost in Translation | 2003 | 8 |
| 238072 | Oceanâ€s Eleven | 2001 | 7.5 |
| 256630 | Pirates of the Caribbean | 2003 | (NULL) |
| 267038 | Pulp Fiction | 1994 | 8.7 |
2.5. Tekst matcht een patroon: de laatste letters
Met patroon '%<letters>' matchen we op de laatste letters.
| id | name | year | rank |
|---|---|---|---|
| 147603 | Hollow Man | 2000 | 5.3 |
| 256630 | Pirates of the Caribbean | 2003 | (NULL) |
2.6. Tekst matcht een patroon: de letter op een specifieke positie
Met patroon '_<letter>%' matchen we op de tweede letter. Je kunt daarbij van meerdere '_' tekens gebruik maken om op een bepaalde positie te komen.
| id | name | year | rank |
|---|---|---|---|
| 30959 | Batman Begins | 2005 | (NULL) |
| 109093 | Fargo | 1996 | 8.2 |
| 124110 | Garden State | 2004 | 8.3 |
| 207992 | Matrix, The | 1999 | 8.5 |
| 350424 | Vanilla Sky | 2001 | 6.9 |
2.7. Tekst matcht een patroon: de voorkomendheid van letters
Met patroon '%<letters>%' matchen we op de voorkomendheid van letters.
| id | name | year | rank |
|---|---|---|---|
| 192017 | Little Mermaid, The | 1989 | 7.3 |
| 257264 | Planes, Trains & Automobiles | 1987 | 7.2 |
3. Gebruik van operators
We hebben tot nu toe al verschillende operators gezien.
Denk aan: =, >=, BETWEEN, LIKE, AND.
Er zijn 2 soorten operators:
- Comparison operators.
- Logical operators.
3.1. Comparison operators
Met comparison operators maak je een vergelijking met een waarde.
De meeste comparison operators hebben we inmiddels gezien. Hier is een totaaloverzicht:
| Operator | Betekenis |
|---|---|
| = (Equals) | Gelijk aan |
| > (Greater Than) | Groter dan |
| < (Less Than) | Kleiner dan |
| >= (Greater Than or Equal To) | Groter dan of gelijk aan |
| <= (Less Than or Equal To) | Kleiner dan of gelijk aan |
| <> (Not Equal To) | Niet gelijk aan |
3.2. Logical operators
Met logical operators maak je een vergelijking met logica.
We hebben al enkele logical operators gezien. Hier is een totaaloverzicht:
| Operator | Betekenis |
|---|---|
| AND | TRUE als 2 Boolean vergelijkingen ook TRUE zijn. |
| OR | TRUE een van de Boolean vergelijkingen TRUE is. |
| NOT | Geeft de omgekeerde waarde van een Boolean operator. |
| IN | TRUE als het gelijk is aan een of meerdere waarden uit een lijst. |
| BETWEEN | TRUE als het in een bepaalde reeks ligt. |
| LIKE | TRUE als er een bepaald patroon gematcht wordt. |
| ALL | TRUE als allen in een set vergelijkingen TRUE is. |
| ANY | TRUE als ten minste 1 in een set vergelijkingen TRUE is. |
| SOME | TRUE als sommigen in een set vergelijkingen TRUE is. |
| EXISTS | TRUE als een subquery rijen bevat. |
We gaan nog enkele voorbeelden bekijken.
3.2.1. Logical operator AND
Met operator AND (en) verkrijgen we waarden die aan 2 andere vergelijkingen voldoen.
| id | name | year | rank |
|---|---|---|---|
| 147603 | Hollow Man | 2000 | 5.3 |
| 350424 | Vanilla Sky | 2001 | 6.9 |
3.2.2. Logical operator OR
Met operator OR (of) verkrijgen we waarden die aan een van 2 andere vergelijkingen voldoen.
| id | name | year | rank |
|---|---|---|---|
| 17173 | Animal House | 1978 | 7.5 |
| 30959 | Batman Begins | 2005 | (NULL) |
| 124110 | Garden State | 2004 | 8.3 |
| 130128 | Godfather, The | 1972 | 9 |
| 176712 | Kill Bill: Vol. 2 | 2004 | 8.2 |
| 313459 | Star Wars | 1977 | 8.8 |
3.2.3. Logical operator NOT
Met operator NOT (niet) verkrijgen we waarden die niet aan een vergelijking voldoen.
| id | name | year | rank |
|---|---|---|---|
| 10920 | Aliens | 1986 | 8.2 |
| 17173 | Animal House | 1978 | 7.5 |
| 18979 | Apollo 13 | 1995 | 7.5 |
| ... | ... | ... | ... |
Samenvatting
- Met
WHEREkun je een filter toepassen.
- Je gebruikt comparisson- en logical operators voor vergelijkingen.
- Comparison operators:
| Operator | Betekenis |
|---|---|
| = (Equals) | Gelijk aan |
| > (Greater Than) | Groter dan |
| < (Less Than)] | Kleiner dan |
| >= (Greater Than or Equal To) | Groter dan of gelijk aan |
| <= (Less Than or Equal To) | Kleiner dan of gelijk aan |
| <> (Not Equal To) | Niet gelijk aan |
- Voorbeeld:
- Logical operators:
| Operator | Betekenis |
|---|---|
| AND | TRUE als 2 Boolean vergelijkingen ook TRUE zijn. |
| OR | TRUE een van de Boolean vergelijkingen TRUE is. |
| NOT | Geeft de omgekeerde waarde van een Boolean operator. |
| IN | TRUE als het gelijk is aan een of meerdere waarden uit een lijst. |
| BETWEEN | TRUE als het in een bepaalde reeks ligt. |
| LIKE | TRUE als er een bepaald patroon gematcht wordt. |
| ALL | TRUE als allen in een set vergelijkingen TRUE is. |
| ANY | TRUE als ten minste 1 in een set vergelijkingen TRUE is. |
| SOME | TRUE als sommigen in een set vergelijkingen TRUE is. |
| EXISTS | TRUE als een subquery rijen bevat. |
- Voorbeeld: