MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona POSITION() in MariaDB

In MariaDB, POSITION() è una funzione di stringa incorporata che restituisce la posizione della prima occorrenza di una sottostringa all'interno di un'altra stringa. Fa parte di ODBC 3.0.

POSITION(substr IN str) è sinonimo di LOCATE(substr,str) .

POSITION() è anche simile a INSTR() funzione, tranne che POSITION() utilizza il IN sintassi e che l'ordine degli argomenti è invertito tra queste due funzioni.

Sintassi

La sintassi è questa:

POSITION(substr IN str)

Dove str è la stringa e substr è la sottostringa per la quale restituire la posizione di.

Esempio

Ecco un esempio di base:

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

Risultato:

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

Maiuscole/minuscole

POSITION() esegue una ricerca senza distinzione tra maiuscole e minuscole:

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

Risultato:

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

Ricorrenze multiple

Se la sottostringa ricorre più di una volta, viene restituita solo la posizione della prima (dalla posizione iniziale):

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

Risultato:

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

Partita parziale

Se la sottostringa fa parte di una parola più grande, è ancora una corrispondenza:

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

Risultato:

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

Ma se la stringa è solo una parte della sottostringa, non è una corrispondenza:

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

Risultato:

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

Spazi

Il carattere spazio è ancora una stringa, quindi possiamo includere spazi nella sottostringa, anche se è l'unico carattere:

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

Risultato:

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

Stringa vuota

Ecco cosa succede quando la sottostringa è una stringa vuota:

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

Risultato:

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

Nessuna corrispondenza

Se la sottostringa non viene trovata nella stringa, POSITION() restituisce 0 :

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

Risultato:

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

Argomenti nulli

Fornendo null per qualsiasi argomento risulta null :

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

Risultato:

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

Fornire il numero sbagliato di argomenti

Chiamando POSITION() con il numero errato di argomenti o senza passare alcun argomento genera un errore:

SELECT POSITION('dog');

Risultato:

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