Dela via


LIKE (Entitets-SQL)

Avgör om ett visst tecken String matchar ett angivet mönster.

Syntax

match [NOT] LIKE pattern [ESCAPE escape]

Argument

match Ett entitets-SQL-uttryck som utvärderas till en String.

pattern Ett mönster som matchar den angivna String.

escape Ett escape-tecken.

INTE Anger att resultatet av LIKE ska negeras.

Returvärde

trueom matchar string mönstret, annars . false

Kommentarer

Entitets-SQL-uttryck som använder LIKE-operatorn utvärderas på ungefär samma sätt som uttryck som använder likhet som filtervillkoren. Entitets-SQL-uttryck som använder LIKE-operatorn kan dock innehålla både literaler och jokertecken.

I följande tabell beskrivs syntaxen för mönstret string.

Jokertecken beskrivning Exempel
% Något string av noll eller fler tecken. title like '%computer%' hittar alla rubriker med ordet "computer" var som helst i rubriken.
_ (understreck) Alla enskilda tecken. firstname like '_ean' hittar alla förnamn med fyra bokstäver som slutar med "ean" som Dean eller Sean.
[ ] Ett enskilt tecken i det angivna intervallet ([a-f]) eller ange ([abcdef]). lastname like '[C-P]arsen' hittar efternamn som slutar med "arsen" och börjar med ett enskilt tecken mellan C och P, till exempel Carsen eller Larsen.
[^] Ett enskilt tecken finns inte i det angivna intervallet ([^a-f]) eller ange ([^abcdef]). lastname like 'de[^l]%' hittar alla efternamn som börjar med "de" och inkluderar inte "l" som följande bokstav.

Kommentar

Entitets-SQL LIKE-operatorn och ESCAPE-satsen kan inte tillämpas på System.DateTime eller System.Guid värden.

LIKE stöder ASCII-mönstermatchning och Unicode-mönstermatchning. När alla parametrar är ASCII-tecken utförs ASCII-mönstermatchning. Om ett eller flera av argumenten är Unicode konverteras alla argument till Unicode och Unicode-mönstermatchning utförs. När du använder Unicode med LIKE är avslutande blanksteg betydande. Men för icke-Unicode är avslutande blanksteg inte betydande. Mönstersträngsyntaxen för entitets-SQL är samma som för Transact-SQL.

Ett mönster kan innehålla vanliga tecken och jokertecken. Under mönstermatchning måste vanliga tecken exakt matcha de tecken som anges i tecknet string. Jokertecken kan dock matchas med godtyckliga fragment av teckensträngen. När den används med jokertecken är LIKE-operatorn mer flexibel än operatorerna = och != strängjämförelse.

Kommentar

Du kan använda providerspecifika tillägg om du riktar in dig på en specifik provider. Sådana konstruktioner kan dock behandlas på olika sätt av andra leverantörer, till exempel. SqlServer stöder [first-last] och [^first-last] mönster där det förra matchar exakt ett tecken mellan första och sista, och det senare matchar exakt ett tecken som inte är mellan första och sista.

Esc

Genom att använda ESCAPE-satsen kan du söka efter teckensträngar som innehåller ett eller flera av de särskilda jokertecken som beskrivs i tabellen i föregående avsnitt. Anta till exempel att flera dokument innehåller literalen "100%" i rubriken och att du vill söka efter alla dessa dokument. Eftersom procenttecknet (%) är ett jokertecken måste du undvika det med hjälp av ENTITY SQL ESCAPE-satsen för att utföra sökningen. Följande är ett exempel på det här filtret.

"title like '%100!%%' escape '!'"

I det här sökuttrycket behandlas procenttecknet för jokertecken (%) omedelbart efter utropstecknet (!) som en literal i stället för som ett jokertecken. Du kan använda valfritt tecken som escape-tecken förutom jokertecken för Entity SQL och hakparentesen ([ ]) tecken. I föregående exempel är utropstecknet (!) escape-tecknet.

Exempel

Följande två entitets-SQL-frågor använder operatorerna LIKE och ESCAPE för att avgöra om en specifik teckensträng matchar ett angivet mönster. Den första frågan söker efter som Name börjar med tecknen Down_. Den här frågan använder ESCAPE-alternativet eftersom understrecket (_) är ett jokertecken. Utan att ange ESCAPE-alternativet skulle frågan söka efter värden Name som börjar med ordet Down följt av ett enskilt tecken förutom understreckstecknet. Frågorna baseras på AdventureWorks försäljningsmodell. Följ dessa steg för att kompilera och köra den här frågan:

  1. Följ proceduren i Så här kör du en fråga som returnerar PrimitiveType-resultat.

  2. Skicka följande fråga som ett argument till ExecutePrimitiveTypeQuery metoden:

-- 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%'

Se även