La función POSITION es una función de manipulación de series de caracteres que manipula todos los tipos de datos (BIT, BLOB y CHARACTER) y devuelve la posición de una serie de caracteres contenida en otra.
POSITION devuelve un entero que proporciona la posición de una serie de caracteres (ExpresiónBúsqueda) en una segunda serie de caracteres(ExpresiónOrigen). Una posición de uno corresponde al primer carácter de la serie de caracteres de origen.
Si está presente, la cláusula FROM proporciona una posición en la serie de caracteres de búsqueda en la que comienza la misma. Si falta una cláusula FROM, la búsqueda se realiza desde el principio de la serie de caracteres de origen.
Si está presente, la cláusula REPEAT proporciona la cuenta de repeticiones y devuelve la posición correspondiente a la enésima repetición de la serie de búsqueda en la serie de caracteres de origen. Si la cuenta de repeticiones es negativa, se busca en la serie de caracteres de origen desde el final.
Si falta una cláusula REPEAT, se presupone una cuenta de repeticiones de +1, esto es, se devuelve la posición en que aparece por primera vez, comenzando a buscar desde el principio. Si la serie de caracteres de búsqueda tiene una longitud de cero, el resultado es uno.
Si la serie de caracteres de búsqueda no se encuentra, el resultado es cero: si está presente la cláusula FROM, esto se aplica solamente a la sección de la serie de caracteres de búsqueda que se está buscando. Si la cláusula REPEAT está presente esto sólo se aplica si el número en que aparece la serie de caracteres no es suficiente.
Si cualquier parámetro es NULL, el resultado es NULL.
Las series de caracteres de búsqueda y de origen puede ser de los tipos de datos CHARACTER, BLOB o BIT pero deben tener el mismo tipo.
POSITION('Village' IN 'Hursley Village'); returns 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