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