sql >> Database >  >> RDS >> Mysql

Hoe de functie POSITION() werkt in MySQL

In MySQL, de POSITION() functie retourneert de positie van het eerste voorkomen van een subtekenreeks binnen de tekenreeks.

Deze functie is eigenlijk een synoniem voor LOCATE() , maar met een iets andere syntaxis. De LOCATE() functie heeft ook extra functionaliteit, in die zin dat u een startpositie voor uw zoekopdracht kunt definiëren.

Syntaxis

De basissyntaxis gaat als volgt:

POSITION(substr IN str)

Waar substr is de substring en str is de snaar.

Voorbeeld 1 – Basisgebruik

SELECT POSITION('Cat' IN 'The Cat') Result;

Resultaat:

+--------+
| Result |
+--------+
|      5 |
+--------+

Voorbeeld 2 – Hoofdlettergevoeligheid

De POSITION() functie is multibyte veilig en is alleen hoofdlettergevoelig als ten minste één argument een binaire tekenreeks is.

Het volgende voorbeeld is dus niet hoofdlettergevoelig:

SELECT POSITION('Cat' IN 'The cat') Result;

Resultaat:

+--------+
| Result |
+--------+
|      5 |
+--------+

Voorbeeld 3 – Geen overeenkomst

De functie retourneert 0 als de substring niet binnen de string wordt gevonden:

SELECT POSITION('Dog' IN 'The cat') Result;

Resultaat:

+--------+
| Result |
+--------+
|      0 |
+--------+

Voorbeeld 4 – Ingesloten substrings

Wees voorzichtig bij het kiezen van de subtekenreeks. Als het deel uitmaakt van een ander woord, kunt u een vals positief resultaat krijgen:

SELECT POSITION('Cat' IN 'Good Catch!') Result;

Resultaat:

+--------+
| Result |
+--------+
|      6 |
+--------+

Als u alleen op zoek bent naar kat , het dier, zou dit een vals positief zijn.

Voorbeeld 5 – Alleen eerste keer

Onthoud, deze functie retourneert alleen de positie van de eerste voorkomen van de substring. Alle volgende gebeurtenissen worden genegeerd:

SELECT POSITION('Cat' IN 'My cat is bigger than your cat') Result;

Resultaat:

+--------+
| Result |
+--------+
|      4 |
+--------+

Voorbeeld 6 – NULL-argumenten

Als een van de argumenten NULL . is , het resultaat is NULL :

SELECT 
  POSITION('Cat' IN NULL) 'Result 1',
  POSITION(NULL IN 'The Cat') 'Result 2';

Resultaat:

+----------+----------+
| Result 1 | Result 2 |
+----------+----------+
|     NULL |     NULL |
+----------+----------+

Zoals vermeld, kunt u ook de LOCATE() . gebruiken functie, waarmee u een startpositie voor uw zoekopdracht kunt definiëren.


  1. Voorwaardelijke opmaak toepassen op een getal in SQL Server met FORMAT()

  2. Retourneer de korte maandnaam van een datum in Oracle

  3. Tabel draaien/draaien met aggregatie in Oracle

  4. Een standaardwaarde instellen voor een bestaande kolom