SQL Server Essentials: Gebruik de SQL LIKE operator

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:

Advertentie

  • 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].
The four different types of wildcard characters to use with the LIKE operator.

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.

Advertentie

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%';
Matching multiple wildcard characters (Image credit: Petri/Michael Otey)

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 '____-%';
Single character wildcard matching (Image credit: Petri/Michael Otey)

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 for a set of characters (Image credit: Petri/Michael Otey)

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’.

Advertentie

USE AdventureworksLT2019;

SELECT LastName, FirstName FROM SalesLT.Customer

WHERE LastName LIKE '[C-L]ee'
Wildcard matching for a range of characters (Image credit: Petri/Michael Otey)

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]%';
Excluding characters that are not part of the specified set (Image credit: Petri/Michael Otey)

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%';
Using multiple wildcard matching conditions (Image credit: Petri/Michael Otey)

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 ‘%[ [ ]%’ [
Searching for wildcard characters
  • 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.
(Image credit: Petri/Michael Otey)

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/