sql >> Database >  >> RDS >> MariaDB

Hoe POSITION() werkt in MariaDB

In MariaDB, POSITION() is een ingebouwde tekenreeksfunctie die de positie van het eerste voorkomen van een subtekenreeks binnen een andere tekenreeks retourneert. Het maakt deel uit van ODBC 3.0.

POSITION(substr IN str) is een synoniem voor LOCATE(substr,str) .

POSITION() is ook vergelijkbaar met de INSTR() functie, behalve dat POSITION() gebruikt de IN syntaxis, en dat de argumentvolgorde tussen deze twee functies wordt omgekeerd.

Syntaxis

De syntaxis gaat als volgt:

POSITION(substr IN str)

Waar str is de string, en substr is de subtekenreeks waarvan de positie moet worden geretourneerd.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT POSITION('cute' IN 'My cute dog');

Resultaat:

+-----------------------------------+
| POSITION('cute' IN 'My cute dog') |
+-----------------------------------+
|                                 4 |
+-----------------------------------+

Hoofdlettergevoeligheid

POSITION() voert een hoofdletterongevoelige zoekopdracht uit:

SELECT POSITION('CUTE' IN 'My cute dog');

Resultaat:

+-----------------------------------+
| POSITION('CUTE' IN 'My cute dog') |
+-----------------------------------+
|                                 4 |
+-----------------------------------+

Meerdere gebeurtenissen

Als de subtekenreeks meer dan één keer voorkomt, wordt alleen de positie van de eerste (vanaf de startpositie) geretourneerd:

SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!');

Resultaat:

+--------------------------------------------------+
| POSITION('cute' IN 'My cute dog is SOOOO cute!') |
+--------------------------------------------------+
|                                                4 |
+--------------------------------------------------+

Gedeeltelijke overeenkomst

Als de subtekenreeks deel uitmaakt van een groter woord, is het nog steeds een overeenkomst:

SELECT POSITION('dog' IN 'My doggy is SOOO cute!');

Resultaat:

+---------------------------------------------+
| POSITION('dog' IN 'My doggy is SOOO cute!') |
+---------------------------------------------+
|                                           4 |
+---------------------------------------------+

Maar als de string slechts een deel van de substring is, is het geen overeenkomst:

SELECT POSITION('doggy' IN 'My dog is SOOO cute!');

Resultaat:

+---------------------------------------------+
| POSITION('doggy' IN 'My dog is SOOO cute!') |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+

Spaties

Het spatieteken is nog steeds een tekenreeks, dus we kunnen spaties in de subtekenreeks opnemen, zelfs als dit het enige teken is:

SELECT POSITION(' ' IN 'My dog');

Resultaat:

+---------------------------+
| POSITION(' ' IN 'My dog') |
+---------------------------+
|                         3 |
+---------------------------+

Lege string

Dit is wat er gebeurt als de subtekenreeks een lege tekenreeks is:

SELECT POSITION('' IN 'My dog');

Resultaat:

+--------------------------+
| POSITION('' IN 'My dog') |
+--------------------------+
|                        1 |
+--------------------------+

Geen overeenkomst

Als de subtekenreeks niet in de tekenreeks wordt gevonden, POSITION() retourneert 0 :

SELECT position('cat' IN 'My dog');

Resultaat:

+-----------------------------+
| position('cat' IN 'My dog') |
+-----------------------------+
|                           0 |
+-----------------------------+

Nullargumenten

null opgeven voor elk van de argumenten resulteert in null :

SELECT 
    POSITION(null IN 'My dog'),
    POSITION('dog' IN null);

Resultaat:

+----------------------------+-------------------------+
| POSITION(null IN 'My dog') | POSITION('dog' IN null) |
+----------------------------+-------------------------+
|                       NULL |                    NULL |
+----------------------------+-------------------------+

Het verkeerde aantal argumenten geven

POSITION() . aanroepen met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:

SELECT POSITION('dog');

Resultaat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. PDOException SQLSTATE [HY000] [2002] Geen dergelijk bestand of map

  2. Drie tabellen samenvoegen met MySQL

  3. Wat is DBMS? – Een uitgebreide gids voor databasebeheersystemen

  4. NLS_COLLATION_ID() Functie in Oracle