LIKE (Entiteit SQL)
Bepaalt of een specifiek teken String
overeenkomt met een opgegeven patroon.
Syntaxis
match [NOT] LIKE pattern [ESCAPE escape]
Argumenten
match
Een Entiteit SQL-expressie die resulteert in een String
.
pattern
Een patroon dat overeenkomt met de opgegeven String
.
escape
Een escape-teken.
GEEFT NIET aan dat het resultaat van LIKE wordt ontkend.
Retourwaarde
true
als het string
patroon overeenkomt; anders false
.
Opmerkingen
Entiteits-SQL-expressies die gebruikmaken van de LIKE-operator worden op ongeveer dezelfde manier geëvalueerd als expressies die gelijkheid gebruiken als filtercriteria. Entiteits-SQL-expressies die gebruikmaken van de LIKE-operator kunnen echter zowel letterlijke tekens als jokertekens bevatten.
In de volgende tabel wordt de syntaxis van het patroon string
beschreven.
Jokerteken | Beschrijving | Voorbeeld |
---|---|---|
% | Een string of meer tekens. |
title like '%computer%' zoekt naar alle titels met het woord "computer" ergens in de titel. |
_ (onderstrepingsteken) | Elk willekeurig teken. | firstname like '_ean' zoekt alle voornamen van vier letters die eindigen op "ean , zoals Dean of Sean. |
[ ] | Eén teken in het opgegeven bereik ([a-f]) of set ([abcdef]). | lastname like '[C-P]arsen' zoekt achternamen die eindigen op 'arsen' en beginnen met een enkel teken tussen C en P, zoals Carsen of Larsen. |
[^] | Eén teken dat niet in het opgegeven bereik ([^a-f]) of set ([^abcdef]) staat. | lastname like 'de[^l]%' zoekt alle achternamen die beginnen met "de" en bevatten geen "l" als de volgende letter. |
Notitie
De Entiteit SQL LIKE-operator en escape-component kunnen niet worden toegepast op System.DateTime
of System.Guid
waarden.
LIKE biedt ondersteuning voor ASCII-patroonkoppeling en Unicode-patroonkoppeling. Wanneer alle parameters ASCII-tekens zijn, wordt ascii-patroonkoppeling uitgevoerd. Als een of meer van de argumenten Unicode zijn, worden alle argumenten geconverteerd naar Unicode en unicode-patroonkoppelingen uitgevoerd. Wanneer u Unicode met LIKE gebruikt, zijn volgspaties aanzienlijk; Voor niet-Unicode zijn volgspaties echter niet significant. De syntaxis van de patroontekenreeks van Entity SQL is hetzelfde als die van Transact-SQL.
Een patroon kan reguliere tekens en jokertekens bevatten. Tijdens het vergelijken van patronen moeten reguliere tekens exact overeenkomen met de tekens die zijn opgegeven in het teken string
. Jokertekens kunnen echter worden vergeleken met willekeurige fragmenten van de tekenreeks. Wanneer deze wordt gebruikt met jokertekens, is de operator LIKE flexibeler dan de operator = en != tekenreeksvergelijking.
Notitie
U kunt providerspecifieke extensies gebruiken als u zich richt op een specifieke provider. Dergelijke constructies kunnen echter anders worden behandeld door andere providers, bijvoorbeeld. SqlServer ondersteunt patronen [first-last] en [^first-last] waarbij de vorige exact één teken tussen het eerste en laatste teken overeenkomt en de laatste exact één teken bevat dat niet tussen het eerste en het laatste teken valt.
Escape
Met behulp van de ESCAPE-component kunt u zoeken naar tekenreeksen die een of meer speciale jokertekens bevatten die in de tabel in de vorige sectie worden beschreven. Stel dat meerdere documenten de letterlijke '100%' in de titel bevatten en dat u naar al deze documenten wilt zoeken. Omdat het procentteken (%) een jokerteken is, moet u dit escapen met behulp van de Entity SQL ESCAPE-component om de zoekopdracht uit te voeren. Hier volgt een voorbeeld van dit filter.
"title like '%100!%%' escape '!'"
In deze zoekexpressie wordt het procent jokerteken (%) direct na het uitroepteken (!) behandeld als een letterlijk teken in plaats van als jokerteken. U kunt elk teken gebruiken als escape-teken, met uitzondering van de jokertekens van Entity SQL en de vierkante haak ([ ]
) tekens. In het vorige voorbeeld is het uitroepteken (!) het escapeteken.
Opmerking
De volgende twee entiteits-SQL-query's gebruiken de operators LIKE en ESCAPE om te bepalen of een specifieke tekenreeks overeenkomt met een opgegeven patroon. Met de eerste query wordt gezocht naar de Name
tekens die beginnen met de tekens Down_
. Deze query maakt gebruik van de ESCAPE-optie omdat het onderstrepingsteken (_
) een jokerteken is. Zonder de ESCAPE-optie op te geven, zoekt de query naar waarden Name
die beginnen met het woord Down
gevolgd door een ander teken dan het onderstrepingsteken. De query's zijn gebaseerd op het AdventureWorks Sales Model. Voer de volgende stappen uit om deze query te compileren en uit te voeren:
Volg de procedure in Procedure: Voer een query uit die PrimitieveType-resultaten retourneert.
Geef de volgende query als argument door aan de
ExecutePrimitiveTypeQuery
methode:
-- LIKE and ESCAPE
-- If an AdventureWorksEntities.Products contained a Name
-- with the value 'Down_Tube', the following query would find that
-- value.
Select value P.Name FROM AdventureWorksEntities.Products AS P
WHERE P.Name LIKE 'DownA_%' ESCAPE 'A'
-- LIKE
Select value P.Name FROM AdventureWorksEntities.Products AS P
WHERE P.Name LIKE 'BB%'