sql >> Database >  >> RDS >> Database

Hoe LIKE te gebruiken in SQL

Probleem:

U wilt een subtekenreeks vinden die overeenkomt met een patroon in een tekenreeks.

Voorbeeld:

Onze database heeft een tabel met de naam klant met gegevens in de volgende kolommen:id , first_name , last_name , en city .

id voornaam achternaam stad
1 Alan Watson Madrid
2 Lisa Zwart Singapore
3 Laura Willems Seattle
4 Milaan Baksteen Seoel

Laten we enkele voorbeelden bekijken van patroonherkenning in SQL.

Voorbeeld 1:

Laten we de voornaam, achternaam en stad weergeven van elke klant wiens stadsnaam begint met de letter 'S'.

Oplossing:

SELECT last_name, first_name, city  
FROM customer
WHERE city LIKE 'S%';
achternaam voornaam stad
Lisa Zwart S ingapore
Milaan Baksteen S eoul
Laura Willems S eten

We gebruikten het % jokerteken, dat nul of meer onbekende tekens vertegenwoordigt. Dit jokerteken kan overal in de tekenreeks worden gebruikt.

Voorbeeld 2:

Laten we de voornaam, achternaam en stad tonen van elke klant wiens stadsnaam precies vijf tekens bevat.

Oplossing:

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

Dit is het resultaat:

achternaam voornaam stad
Milaan Baksteen Seoel

Het underscore-jokerteken kan worden gebruikt om een ​​enkel onbekend teken weer te geven. Door er vijf achter elkaar te gebruiken, kunnen we dus alle tekenreeksen weergeven die vijf tekens lang zijn. In ons voorbeeld is Seoul de enige stad die aan die beschrijving voldoet.

Voorbeeld 3:

Laten we de voornaam, achternaam en stad tonen van elke klant wiens stad begint met de letter 'S' en de letter 'o' als het voorlaatste teken heeft.

Oplossing:

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

Dit is het resultaat:

achternaam voornaam stad
Lisa Zwart S ingapo opnieuw
Milaan Baksteen S eo ul

De zoekopdracht leverde slechts twee records op:Lisa Black van S ingapo re en Milan Brick van S eo ul. Deze steden komen overeen met het gegeven patroon. Hier hebben we beide jokertekens gecombineerd om een ​​specifieker patroon te genereren:alle tekenreeksen die beginnen met een hoofdletter 'S' en daarna een willekeurig aantal andere tekens bevatten, zolang het voorlaatste teken een kleine letter 'o' is. '

Discussie:

Als u records wilt selecteren waarin een tekenreeks overeenkomt met een specifiek patroon, kunt u een LIKE . gebruiken clausule als de voorwaarde in een WHERE clausule. Na WHERE , vermeld de naam van de kolom (bijv. city ) gevolgd door een LIKE clausule die het tekenreekspatroon specificeert (bijv. 'S%o__' ) om naar te zoeken.

Zoals we in de voorbeelden zagen, kunt u twee speciale tekens gebruiken die bekend staan ​​als jokertekens om onbekende karakters weer te geven:

  • Het jokerteken '%' geeft nul of meer tekens aan.
  • Het jokerteken '_' geeft een enkel teken aan.

U kunt deze jokertekens combineren om zeer krachtige resultaten te behalen. Je kunt ook meer dan één LIKE . koppelen voorwaarde. Ten slotte kunt u de NOT . gebruiken operator om strings te vinden die niet overeenkomen met het gegeven patroon.


  1. WIDTH_BUCKET() Functie in Oracle

  2. Hoe stel ik programmatisch de verbindingsreeks in voor Entity-Framework Code-First?

  3. Moet Oracle merge omzetten in query naar PostgreSQL

  4. MySQL/schrijfbestand fout (Errcode 28)