Probleem:
U wilt een subtekenreeks vinden die overeenkomt met een patroon in een tekenreeks.
Voorbeeld:
Onze database heeft een tabel met de naam klant met gegevens in de volgende kolommen:id
, first_name
, last_name
, en city
.
id | voornaam | achternaam | stad |
---|---|---|---|
1 | Alan | Watson | Madrid |
2 | Lisa | Zwart | Singapore |
3 | Laura | Willems | Seattle |
4 | Milaan | Baksteen | Seoel |
Laten we enkele voorbeelden bekijken van patroonherkenning in SQL.
Voorbeeld 1:
Laten we de voornaam, achternaam en stad weergeven van elke klant wiens stadsnaam begint met de letter 'S'.
Oplossing:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%';
achternaam | voornaam | stad |
---|---|---|
Lisa | Zwart | S ingapore |
Milaan | Baksteen | S eoul |
Laura | Willems | S eten |
We gebruikten het % jokerteken, dat nul of meer onbekende tekens vertegenwoordigt. Dit jokerteken kan overal in de tekenreeks worden gebruikt.
Voorbeeld 2:
Laten we de voornaam, achternaam en stad tonen van elke klant wiens stadsnaam precies vijf tekens bevat.
Oplossing:
SELECT last_name, first_name, city FROM customer WHERE city LIKE '_____';
Dit is het resultaat:
achternaam | voornaam | stad |
---|---|---|
Milaan | Baksteen | Seoel |
Het underscore-jokerteken kan worden gebruikt om een enkel onbekend teken weer te geven. Door er vijf achter elkaar te gebruiken, kunnen we dus alle tekenreeksen weergeven die vijf tekens lang zijn. In ons voorbeeld is Seoul de enige stad die aan die beschrijving voldoet.
Voorbeeld 3:
Laten we de voornaam, achternaam en stad tonen van elke klant wiens stad begint met de letter 'S' en de letter 'o' als het voorlaatste teken heeft.
Oplossing:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%o__';
Dit is het resultaat:
achternaam | voornaam | stad |
---|---|---|
Lisa | Zwart | S ingapo opnieuw |
Milaan | Baksteen | S eo ul |
De zoekopdracht leverde slechts twee records op:Lisa Black van S ingapo re en Milan Brick van S eo ul. Deze steden komen overeen met het gegeven patroon. Hier hebben we beide jokertekens gecombineerd om een specifieker patroon te genereren:alle tekenreeksen die beginnen met een hoofdletter 'S' en daarna een willekeurig aantal andere tekens bevatten, zolang het voorlaatste teken een kleine letter 'o' is. '
Discussie:
Als u records wilt selecteren waarin een tekenreeks overeenkomt met een specifiek patroon, kunt u een LIKE
. gebruiken clausule als de voorwaarde in een WHERE
clausule. Na WHERE
, vermeld de naam van de kolom (bijv. city
) gevolgd door een LIKE
clausule die het tekenreekspatroon specificeert (bijv. 'S%o__'
) om naar te zoeken.
Zoals we in de voorbeelden zagen, kunt u twee speciale tekens gebruiken die bekend staan als jokertekens om onbekende karakters weer te geven:
- Het jokerteken '%' geeft nul of meer tekens aan.
- Het jokerteken '_' geeft een enkel teken aan.
U kunt deze jokertekens combineren om zeer krachtige resultaten te behalen. Je kunt ook meer dan één LIKE
. koppelen voorwaarde. Ten slotte kunt u de NOT
. gebruiken operator om strings te vinden die niet overeenkomen met het gegeven patroon.