sql >> Databasteknik >  >> RDS >> Database

Hur man använder LIKE i SQL

Problem:

Du vill hitta en delsträng som matchar ett mönster i en sträng.

Exempel:

Vår databas har en tabell som heter kund med data i följande kolumner:id , first_name , last_name och city .

id förnamn efternamn stad
1 Alan Watson Madrid
2 Lisa Svart Singapore
3 Laura Williams Seattle
4 Milano Brick Seoul

Låt oss se några exempel på mönstermatchning i SQL.

Exempel 1:

Låt oss visa förnamn, efternamn och stad för varje kund vars stadsnamn börjar med bokstaven 'S'.

Lösning:

SELECT last_name, first_name, city  
FROM customer
WHERE city LIKE 'S%';
efternamn förnamn stad
Lisa Svart S ingapore
Milano Brick S eoul
Laura Williams S eattle

Vi använde jokertecken %, som representerar noll eller fler okända tecken. Detta jokertecken kan användas var som helst i strängen.

Exempel 2:

Låt oss visa förnamn, efternamn och stad för varje kund vars stadsnamn innehåller exakt fem tecken.

Lösning:

SELECT last_name, first_name, city  
FROM customer
WHERE city LIKE '_____';

Här är resultatet:

efternamn förnamn stad
Milano Brick Seoul

Understrecket jokertecken kan användas för att representera ett enda okänt tecken. Genom att använda fem av dem i rad kan vi alltså representera alla strängar som är fem tecken långa. I vårt exempel är den enda staden som matchar den beskrivningen Seoul.

Exempel 3:

Låt oss visa förnamn, efternamn och stad för varje kund vars stad börjar med bokstaven "S" och har bokstaven "o" som tredje till sista tecknet.

Lösning:

SELECT last_name, first_name, city  
FROM customer
WHERE city LIKE 'S%o__';

Här är resultatet:

efternamn förnamn stad
Lisa Svart S ingapo re
Milano Brick S eo ul

Frågan returnerade endast två poster:Lisa Black från S ingapo re och Milan Brick från S eo ul. Dessa städer matchar det givna mönstret. Här kombinerade vi båda jokertecken för att skapa ett mer specifikt mönster:alla strängar som börjar med stor bokstav 'S' och innehåller valfritt antal andra tecken efter det, så länge som det tredje till sista tecknet är en liten bokstav 'o. '

Diskussion:

Om du vill välja poster där en sträng matchar ett specifikt mönster, kan du använda en LIKE sats som villkoret i en WHERE klausul. Efter WHERE , lista namnet på kolumnen (t.ex. city ) följt av en LIKE sats som anger strängmönstret (t.ex. 'S%o__' ) för att söka efter.

Som vi såg i exemplen kan du använda två specialtecken som kallas jokertecken för att representera okända tecken:

  • Jokertecknet '%' anger noll eller fler tecken.
  • Jokertecken '_' anger vilket enskilt tecken som helst.

Du kan kombinera dessa jokertecken för att uppnå några riktigt kraftfulla resultat. Du kan också koppla ihop mer än en LIKE tillstånd. Slutligen kan du använda NOT operatorn för att hitta strängar som inte gör det matcha det givna mönstret.


  1. Skillnad mellan numerisk, float och decimal i SQL Server

  2. GROUP BY och COUNT i PostgreSQL

  3. SQL INTERSECT

  4. Visual Studio:ContextSwitchDeadlock