De T-SQL LIKE-operator is een van de meest bruikbare toevoegingen aan de SQL SELECT-verklaring. De laatste haalt een resultatenreeks op, en je kunt gemakkelijk de resultaten filteren met behulp van gelijkheidsoperatoren en de WHERE-clausule om bepaalde specifieke voorwaarden te selecteren. Maar wat als je rijen wilt selecteren die gebaseerd zijn op gedeeltelijke waarden? Dat is waar de SQL LIKE-verklaring van pas komt, en ik zal je laten zien hoe je deze in deze tutorial kunt gebruiken.
SQL LIKE Syntax
Je kunt de basis syntaxis van de LIKE-operator zien in de volgende lijst:
- Eerst geef je de expressie op die je wilt matchen. Dit is meestal een kolomnaam.
- Vervolgens kun je optioneel NOT specificeren om deze expressie te laten werken voor alle voorwaarden die niet overeenkomen. Het gebruik van de NOT LIKE-voorwaarde is niet de meest voorkomende manier om de LIKE-operator te gebruiken.
- Vervolgens moet je het patroon opgeven om overeen te komen. Dit kan een letterlijke waarde zijn of het kan jokertekens bevatten die het overeenkomstproces veel flexibeler maken.
- Dit kan optioneel worden gevolgd door een Escape-teken dat kan worden gebruikt om te zoeken naar jokertekens.
- Als een van de argumenten geen gegevenstype voor tekenreeksen is, zal SQL Server het converteren naar een gegevenstype voor tekenreeksen.
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
SQL LIKE en jokertekens
Voordat we in detail ingaan, moet je weten dat SQL LIKE-patroonovereenkomst zowel reguliere tekens als jokertekens kan bevatten. Jokertekens stellen je in staat om een specifieke tekenreeks te selecteren die overeenkomt met het jokertekenpatroon.
Voor patroonovereenkomst moeten reguliere tekens overeenkomen met de tekens die zijn gespecificeerd in de tekenreeks. Jokertekens kunnen echter overeenkomen met fragmenten van de tekenreeks. Het gebruik van jokertekens maakt de LIKE-operator flexibeler dan de reguliere gelijkheid ( = en != ) van de tekenreeksvergelijkingsoperatoren.
De LIKE-operator accepteert vier verschillende soorten jokertekens. Elk jokerteken voert een andere vergelijkingsfunctie uit, en je kunt meer leren in de volgende tabel.
Wildcard character | Description |
% (percent sign) | Any string of zero or more characters. |
_ (underscore) | Any single character. |
[ ] | Any single character within the specified range [a-f] or set [abcdef]. |
[^] | Any single character not within the specified range [^a-f] or set [^abcdef]. |
De LIKE-operator retourneert TRUE als de match_expression overeenkomt met het opgegeven patroon. Laten we wat voorbeelden gebruiken om te laten zien hoe je de SQL LIKE-operator kunt gebruiken met de AdventureWorksLT2019-voorbeelddatabase.
Het overeenkomen van meerdere jokertekens
Het % jokerteken vertegenwoordigt nul of meer tekens. De volgende query haalt alle rijen op uit de tabel ‘Person.Person’ waarbij de ‘LastName’ begint met de letter ‘A’.
USE AdventureWorksLT2019; SELECT FirstName, LastName FROM SalesLT.Customer WHERE LastName LIKE 'A%';

Jokerteken voor één teken
Het _ jokerteken vertegenwoordigt één teken. De volgende voorbeeldquery haalt alle rijen op uit de tabel ‘SalesLT.Product’ waarbij de ‘Name’ precies vier tekens van elk type heeft gevolgd door een streepje.
USE AdventureWorksLT2019; SELECT ProductID, Name FROM SalesLT.Product WHERE Name LIKE '____-%';

Jokerteken voor een set tekens
De [] wildcard vertegenwoordigt elk enkelvoudig teken binnen een bepaalde reeks of verzameling. Het volgende SQL-statement haalt alle rijen op uit de tabel ‘SalesLT.Product’ waar de kolom ‘Name’ begint met ‘B’, ‘C’ of ‘D’.
USE AdventureWorksLT2019; SELECT Name FROM SalesLT.Product WHERE Name LIKE '[BCD]%';

Wildcard matching voor een reeks tekens
U kunt ook de clausule LIKE gebruiken om ondersteuning te bieden aan zoekopdrachten over een reeks. Deze query haalt de achternamen op die eindigen op ‘ee’ en beginnen met elk enkelvoudig teken tussen de letters ‘C’ en ‘L’.
USE AdventureworksLT2019; SELECT LastName, FirstName FROM SalesLT.Customer WHERE LastName LIKE '[C-L]ee'

Uitsluiten van tekens die niet deel uitmaken van de aangegeven verzameling
De [^] wildcard vertegenwoordigt elk enkelvoudig teken dat niet behoort tot de aangegeven reeks of verzameling. Het volgende query haalt alle rijen op uit de tabel ‘SalesLT.Product’ waar de kolom ‘Name’ niet begint met ‘A’, ‘B’ of ‘C’.
USE AdventureworksLT2019; SELECT Name FROM SalesLT.Product WHERE Name LIKE '[^ABC]%';

Het gebruik van meerdere wildcard-overeenkomstvoorwaarden
De LIKE-clausule kan ook worden gecombineerd met meerdere wildcards in één query. De volgende query gebruikt meerdere SQL-wildcards om alle rijen op te halen uit de tabel ‘Person.Person’ waarbij de ‘FirstName’ de letter ‘a’ bevat en de ‘LastName’ een willekeurig teken gevolgd door ‘l’ heeft.
USE AdventureworksLT2019; SELECT FirstName, LastName FROM SalesLT.Customer WHERE FirstName LIKE '%a%' AND LastName LIKE '_l%';

Zoeken naar wildcard-tekens
Wildcard-overeenkomst voegt veel kracht en flexibiliteit toe aan de LIKE-operator. U vraagt zich echter misschien af hoe u LIKE kunt gebruiken om een van deze wildcard-tekens zelf te matchen.
Om dit te doen, kunt u het wildcard-teken tussen vierkante haken plaatsen, waardoor u een wildcard-teken als een letterlijk teken kunt gebruiken. U kunt enkele voorbeelden zien in de volgende tabel.
Pattern | Search value |
LIKE ‘%2[%]%’ | 2% |
LIKE ‘%[_]m%’ | _m |
LIKE ‘%[ [ ]%’ | [ |
- Het eerste voorbeeld matcht het getal 2 gevolgd door het procentteken.
- Het tweede voorbeeld matcht het underscore-teken gevolgd door de letter m.
- Het derde voorbeeld wordt gebruikt om vierkante haken te matchen.

De SQL LIKE-instructie verbetert de SQL SELECT-instructie
Je zou nu beter moeten begrijpen hoe je de SQL LIKE-operator kunt gebruiken om de kracht en flexibiliteit van de SQL SELECT-instructie te verbeteren. Hier heb ik je ook laten zien hoe je de LIKE-clausule kunt gebruiken met verschillende wildcard-karakters. Tussen het matchen van meerdere wildcard-karakters, het uitvoeren van enkel-teken-matching, het matchen van een set karakters of het uitsluiten van karakters uit de resultaten, heb je echt veel mogelijkheden tot je beschikking.
Source:
https://petri.com/sql-like/