POSITION è una funzione di manipolazione della stringa che manipola tutti i tipi di dati (BIT, BLOB e CHARACTER) e restituisce la posizione di una stringa all'interno di un'altra.
POSITION restituisce un valore integer che fornisce la posizione di una stringa (SearchExpression) in una seconda stringa (SourceExpression). La posizione uno corrisponde al primo carattere della stringa di origine.
Se presente, la clausola FROM fornisce una posizione all'interno della stringa di ricerca in cui inizia la ricerca. In assenza della clausola FROM, la ricerca nella stringa di origine viene eseguita dall'inizio.
Se presente, la clausola REPEAT fornisce un conteggio delle ripetizioni, restituendo la posizione della ennesima ricorrenza della stringa di ricerca all'interno della stringa di origine. Se il conteggio delle ripetizioni è negativo, la ricerca nella stringa di origine viene eseguita a partire dalla fine.
In assenza della clausola REPEAT, si suppone che il conteggio delle ripetizioni sia +1; viene restituita la posizione della prima ricorrenza, a partire dall'inizio. Se la stringa di ricerca ha lunghezza uguale a zero, il risultato è uno.
Se non è possibile individuare la stringa di ricerca, il risultato è zero: se è presente la clausola FROM, è valida solo per la sezione della stringa di origine in cui viene eseguita la ricerca; se la clausola REPEAT è presente, è valida solo in caso di ricorrenze della stringa non sufficienti.
Se uno dei parametri è NULL, il risultato è NULL.
I tipi di dati delle stringhe di ricerca e di origine possono essere CHARACTER, BLOB o BIT, ma devono essere uguali.
POSITION('Village' IN 'Hursley Village'); restituisce 9 POSITION('Town' IN 'Hursley Village'); returns 0 POSITION ('B' IN 'ABCABCABCABCABC'); -> returns 2 POSITION ('D' IN 'ABCABCABCABCABC'); -> returns 0 POSITION ('A' IN 'ABCABCABCABCABC' FROM 4); -> returns 4 POSITION ('C' IN 'ABCABCABCABCABC' FROM 2); -> returns 3 POSITION ('B' IN 'ABCABCABCABCABC' REPEAT 2); -> returns 5 POSITION ('C' IN 'ABCABCABCABCABC' REPEAT 4); -> returns 12 POSITION ('A' IN 'ABCABCABCABCABC' FROM 4 REPEAT 2); -> returns 7 POSITION ('AB' IN 'ABCABCABCABCABC' FROM 2 REPEAT 3); -> returns 10 POSITION ('A' IN 'ABCABCABCABCABC' REPEAT -2); -> returns 10 POSITION ('BC' IN 'ABCABCABCABCABC' FROM 2 REPEAT -3); -> returns 5