sql >> Database teknologi >  >> RDS >> Database

Sådan bruges LIKE i SQL

Problem:

Du vil gerne finde en understreng, der matcher et mønster i en streng.

Eksempel:

Vores database har en tabel med navnet kunde med data i følgende kolonner:id , first_name , last_name og city .

id fornavn efternavn by
1 Alan Watson Madrid
2 Lisa Sort Singapore
3 Laura Williams Seattle
4 Milano Brick Seoul

Lad os se nogle eksempler på mønstermatching i SQL.

Eksempel 1:

Lad os vise fornavn, efternavn og by for hver kunde, hvis bynavn starter med bogstavet 'S'.

Løsning:

SELECT last_name, first_name, city  
FROM customer
WHERE city LIKE 'S%';
efternavn fornavn by
Lisa Sort S ingapore
Milano Brick S eoul
Laura Williams S eattle

Vi brugte jokertegnet %, som repræsenterer nul eller flere ukendte tegn. Dette jokertegn kan bruges hvor som helst i strengen.

Eksempel 2:

Lad os vise fornavnet, efternavnet og byen for hver kunde, hvis bynavn indeholder præcis fem tegn.

Løsning:

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

Her er resultatet:

efternavn fornavn by
Milano Brick Seoul

Understregnings-jokertegnet kan bruges til at repræsentere et enkelt ukendt tegn. Ved at bruge fem af dem i træk kan vi således repræsentere alle strenge, der er fem tegn lange. I vores eksempel er den eneste by, der matcher denne beskrivelse, Seoul.

Eksempel 3:

Lad os vise fornavnet, efternavnet og byen for hver kunde, hvis by starter med bogstavet "S" og har bogstavet "o" som det tredje-til-sidste tegn.

Løsning:

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

Her er resultatet:

efternavn fornavn by
Lisa Sort S ingapo re
Milano Brick S eo ul

Forespørgslen returnerede kun to poster:Lisa Black fra S ingapo re og Milan Brick fra S eo ul. Disse byer matcher det givne mønster. Her kombinerede vi begge jokertegn for at generere et mere specifikt mønster:alle strenge, der begynder med et stort bogstav 'S' og indeholder et vilkårligt antal andre tegn efter det, så længe det tredje-til-sidste tegn er et lille bogstav 'o. '

Diskussion:

Hvis du vil vælge poster, hvor en streng matcher et bestemt mønster, kan du bruge en LIKE klausul som betingelsen i en WHERE klausul. Efter WHERE , angiv navnet på kolonnen (f.eks. city ) efterfulgt af en LIKE klausul, der specificerer strengmønsteret (f.eks. 'S%o__' ) for at søge efter.

Som vi så i eksemplerne, kan du bruge to specialtegn kendt som jokertegn for at repræsentere ukendte tegn:

  • Jokertegnet '%' angiver nul eller flere tegn.
  • Jokertegnet '_' angiver ethvert enkelt tegn.

Du kan kombinere disse jokertegn for at opnå nogle virkelig kraftfulde resultater. Du kan også sammenkæde mere end én LIKE tilstand. Endelig kan du bruge NOT operator for at finde strenge, der ikke match det givne mønster.


  1. Sløjfe over resultatsæt i MySQL

  2. Sådan opretter du historik ELLER reviderer visninger fra Change Data Capture (CDC) tabeller i SQL Server - SQL Server Tutorial

  3. Oracle 11g - Unpivot

  4. Oracle Database Explorer:Gratis træning og akkreditering