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