SQL Basis

Hoofdstuk 6 - Filteren met wildcards

  • Het keyword LIKE werkt met wildcards [ joker kaarten 
     ]
  • LIKE kan alleen gebruikt worden met tekst-velden (strings)
  • Met de LIKE operator kun je zoekpatronen gebruiken in de condities
SELECT <kolom1>,
       <kolom2>
FROM   <tabel>
WHERE  <kolom1> LIKE 'tekst%';	
  • Het % teken is de wildcard en staat voor 'elke mogelijke tekst'
  • Elke waarde die gevonden wordt in (kolom1) die begint met tekst zal opgepikt worden
  • Ook als er niks meer achter tekst staat wordt hij opgepikt
  • Hoofdlettergevoeligheid van de waardes is afhankelijk van het DBMS en hoe deze is geconfigureerd
  • Er kunnen ook meerdere wildcards in de clausule voorkomen
SELECT <kolom1>,
       <kolom2>
FROM   <tabel>
WHERE  <kolom1> LIKE '%tekst in het midden%';	
  • Het % staat voor elke mogelijke tekst maar NULL is onbekend en dus geen tekst

Selecteer uit Products het product id en naam waar ergens in de productnaam 'bean bag' voorkomt

-- Oracle / MySQL / SQL Server
SELECT prod_id,
       prod_name
FROM   Products
WHERE  prod_name LIKE '%bean bag%';
prod_idprod_name
BNBG01Fish bean bag toy
BNBG02Bird bean bag toy
BNBG03Rabbit bean bag toy
  • De _ (underscore) is een wildcard voor 1 karakter
  • Als de % voor 0 of meer karakters is, zo is één _ altijd ook 1 karakter
SELECT <kolom1>,
       <kolom2>
FROM   <tabel>
WHERE  <kolom1> LIKE 't_kst';	

Selecteer uit Products het product id en naam waarin de productnaam 'teddy bear' voorkomt en groter of gelijk is aan 10 inch

-- Oracle / MySQL / SQL Server
SELECT prod_id,
       prod_name
FROM   Products
WHERE  prod_name LIKE '__ inch teddy bear%';
prod_idprod_name
BR0212 inch teddy bear
BR0318 inch teddy bear

Wanneer je met Oracle het LIKE keyword gebruikt
is het vaak nodig om te eindigen met een %
Zo vang je de spaties op aan het einde van een string

Vraag SQL Verwerking
1 - Wat wil ik zien? SELECT  Stap 3
2 - Waar haal ik het vandaan? FROM  Stap 1
3 - Waar wil ik op filteren? WHERE  Stap 2
4 - Waar wil ik op sorteren? ORDER BY  Stap 4


Logische operatoren volgen een ordening:
1 - IN, IS [NOT] NULL, [NOT] BETWEEN
2 - NOT
3 - AND
4 - OR
  1. Selecteer van de klanten alle .com emailadressen (3)


  1. Selecteer de producten waarbij in de productnaam het woord 'doll' staat (2)


  1. Selecteer alles van de klanten waarbij de cust_state eindigt op een I (hoofdletter i) (1)


  1. Selecteer alle kolommen van een product (Products) waar NIET het woord 'bear' in de productbeschrijving voorkomt. Sorteer de tabel aflopend op prijs (6)


  1. Selecteer alle producten waarbij het woord 'toy' en vervolgens het woord 'carrots' voorkomt in de productbeschrijving (1)