Mönstermatchning i SQL-frågor med jokertecken

click fraud protection

SQL-mönstermatchning låter dig söka efter mönster i data om du inte vet exakt vilket ord eller fras du söker. Den här sortens SQL frågan använder jokertecken för att matcha ett mönster, snarare än att specificera det exakt. Du kan till exempel använda jokertecknet "C%" för att matcha alla strängar som börjar med stora C.

Förstoringsglas
Kate Ter Haar / Flickr / CC med 2.0

Använda LIKE Operator

Om du vill använda ett jokerteckenuttryck i en SQL-fråga använder du LIKE-operatören i en WHERE-sats och bifogar mönstret inom enstaka citattecken.

Använd% jokertecken för att göra en enkel sökning

För att söka efter en anställd i din databas med ett efternamn som börjar med bokstaven C, använd följande Transact-SQL-sats:

VÄLJ *
FRÅN anställda
VAR efternamn LIKE 'C%'

Utelämna mönster med NOT-nyckelordet

Använd nyckelordet INTE för att välja poster som inte matchar mönstret. Den här frågan returnerar till exempel alla poster vars senaste namn gör inte börja med C:

VÄLJ *
FRÅN anställda
VAR efternamn INTE Gillar 'C%'
instagram viewer

Matcha ett mönster var som helst med% Wildcard två gånger

Använd två instanser av % jokertecken för att matcha ett visst mönster var som helst. Detta exempel returnerar alla poster som innehåller en C var som helst i efternamnet:

VÄLJ *
FRÅN anställda
VAR efternamn LIKE '% C%'

Hitta en mönstermatchning på en specifik position

Använd _ jokertecken för att returnera data på en specifik plats. Det här exemplet matchar bara om C inträffar vid tredje plats i efternamnkolumnen:

VÄLJ *
FRÅN anställda
VAR efternamn LIKE '_ _C%'

Stödda jokerteckenuttryck i Transact SQL

Det finns flera jokerteckenuttryck som stöds av Transact SQL:

  • De % jokertecken matchar noll eller fler tecken av vilken typ som helst och kan användas för att definiera jokertecken både före och efter mönstret. Om du känner till DOS-mönstermatchning motsvarar det * jokertecken i den syntaxen.
  • De _ jokertecken matchar exakt ett tecken av vilken typ som helst. Det motsvarar ? jokertecken i DOS-mönstermatchning.
  • Ange en lista med tecken genom att stänga dem inom hakparenteser. Till exempel jokertecken [aeiou] matchar alla vokaler.
  • Ange ett teckenintervall genom att lägga in intervallet inom hakparenteser. Till exempel jokertecken [a-m] matchar alla bokstäver i första halvan av alfabetet.
  • Negera ett antal tecken genom att inkludera karatkaraktären direkt inuti den inledande fyrkanten. Till exempel, [^ aeiou] matchar alla karaktärer som inte är vokal medan [^ a-m] matchar alla tecken som inte finns i första halvan av alfabetet.

Kombinera jokertecken för komplexa mönster

Kombinera dessa jokertecken i komplexa mönster för att utföra mer avancerade frågor. Anta till exempel att du måste skapa en lista över alla dina anställda som har namn som börjar med en bokstav från första halvan av alfabetet men som inte avsluta med en vokal. Du kan använda följande fråga:

VÄLJ *
FRÅN anställda
VAR efternamn LIKE '[a-m]% [^ aeiou]'

På samma sätt kan du skapa en lista över alla anställda med efternamn som består av exakt fyra tecken med hjälp av fyra instanser av _ mönster:

VÄLJ *
FRÅN anställda
VAR efternamn LIKE '____'

Som du kan säga erbjuder användningen av SQL-mönstermatchningsmöjligheter databasanvändare möjligheten att gå längre än enkla textfrågor och utföra avancerade sökoperationer.

instagram story viewer