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

Come funziona LOCATE() in MariaDB

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

LOCATE() è simile a INSTR() funzione, eccetto che LOCATE() offre la possibilità di specificare una posizione iniziale per la ricerca. Inoltre, l'ordine degli argomenti è invertito tra queste due funzioni.

Sintassi

Il LOCATE() supporta una sintassi a due argomenti e una sintassi a tre argomenti.

Sintassi di due argomenti:

LOCATE(substr,str)

Sintassi di tre argomenti:

LOCATE(substr,str,pos)

Dove str è la stringa, substr è la sottostringa da trovare e pos è la posizione da cui iniziare la ricerca.

Esempio

Ecco un esempio di base:

SELECT LOCATE('hot', 'The hot sun');

Risultato:

+------------------------------+
| LOCATE('hot', 'The hot sun') |
+------------------------------+
|                            5 |
+------------------------------+

Posizione iniziale

Ecco un esempio di come fornire una posizione di partenza per la ricerca:

SELECT LOCATE('hot', 'The hot sun is really hot', 8);

Risultato:

+------------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot', 8)  |
+------------------------------------------------+
|                                             23 |
+------------------------------------------------+

Maiuscole/minuscole

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

SELECT LOCATE('HOT', 'The hot sun');

Risultato:

+------------------------------+
| LOCATE('HOT', 'The hot sun') |
+------------------------------+
|                            5 |
+------------------------------+

Ricorrenze multiple

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

SELECT LOCATE('hot', 'The hot sun is really hot');

Risultato:

+--------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot') |
+--------------------------------------------+
|                                          5 |
+--------------------------------------------+

Eccolo con una posizione di partenza:

SELECT LOCATE('hot', 'The hot sun is really hot', 20);

Risultato:

+------------------------------------------------+
| LOCATE('hot', 'The hot sun is really hot', 20) |
+------------------------------------------------+
|                                             23 |
+------------------------------------------------+

Partita parziale

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

SELECT LOCATE('hot', 'The hottest sun');

Risultato:

+----------------------------------+
| LOCATE('hot', 'The hottest sun') |
+----------------------------------+
|                                5 |
+----------------------------------+

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

SELECT LOCATE('hottest', 'The hot sun');

Risultato:

+----------------------------------+
| LOCATE('hottest', 'The hot sun') |
+----------------------------------+
|                                0 |
+----------------------------------+

Spazi

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

SELECT LOCATE(' ', 'The hot sun');

Risultato:

+----------------------------+
| LOCATE(' ', 'The hot sun') |
+----------------------------+
|                          4 |
+----------------------------+

Stringa vuota

Ecco cosa succede quando la sottostringa è una stringa vuota:

SELECT LOCATE('', 'The hot sun');

Risultato:

+---------------------------+
| LOCATE('', 'The hot sun') |
+---------------------------+
|                         1 |
+---------------------------+

Nessuna corrispondenza

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

SELECT LOCATE('cold', 'The hot sun');

Risultato:

+-------------------------------+
| LOCATE('cold', 'The hot sun') |
+-------------------------------+
|                             0 |
+-------------------------------+

Argomenti nulli

Fornendo null per qualsiasi argomento risulta null :

SELECT 
    LOCATE(null, 'The hot sun'),
    LOCATE('hot', null);

Risultato:

+-----------------------------+---------------------+
| LOCATE(null, 'The hot sun') | LOCATE('hot', null) |
+-----------------------------+---------------------+
|                        NULL |                NULL |
+-----------------------------+---------------------+

Fornire il numero sbagliato di argomenti

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

SELECT LOCATE('hot');

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOCATE'