W MariaDB, POSITION()
jest wbudowaną funkcją ciągu, która zwraca pozycję pierwszego wystąpienia podciągu w innym ciągu. Jest częścią ODBC 3.0.
POSITION(substr IN str)
jest synonimem LOCATE(substr,str)
.
POSITION()
jest również podobny do INSTR()
funkcja, z wyjątkiem tego, że POSITION()
używa IN
składnia, a kolejność argumentów jest odwrócona między tymi dwiema funkcjami.
Składnia
Składnia wygląda tak:
POSITION(substr IN str)
Gdzie str
jest ciągiem, a substr
jest podciągiem, dla którego należy zwrócić pozycję.
Przykład
Oto podstawowy przykład:
SELECT POSITION('cute' IN 'My cute dog');
Wynik:
+-----------------------------------+ | POSITION('cute' IN 'My cute dog') | +-----------------------------------+ | 4 | +-----------------------------------+
Wrażliwość na wielkość liter
POSITION()
wykonuje wyszukiwanie bez uwzględniania wielkości liter:
SELECT POSITION('CUTE' IN 'My cute dog');
Wynik:
+-----------------------------------+ | POSITION('CUTE' IN 'My cute dog') | +-----------------------------------+ | 4 | +-----------------------------------+
Wiele wystąpień
Jeśli podciąg występuje więcej niż raz, zwracana jest tylko pozycja pierwszego (od pozycji początkowej):
SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!');
Wynik:
+--------------------------------------------------+ | POSITION('cute' IN 'My cute dog is SOOOO cute!') | +--------------------------------------------------+ | 4 | +--------------------------------------------------+
Dopasowanie częściowe
Jeśli podciąg jest częścią większego słowa, nadal jest zgodny:
SELECT POSITION('dog' IN 'My doggy is SOOO cute!');
Wynik:
+---------------------------------------------+ | POSITION('dog' IN 'My doggy is SOOO cute!') | +---------------------------------------------+ | 4 | +---------------------------------------------+
Ale jeśli ciąg jest tylko częścią podciągu, nie jest to dopasowanie:
SELECT POSITION('doggy' IN 'My dog is SOOO cute!');
Wynik:
+---------------------------------------------+ | POSITION('doggy' IN 'My dog is SOOO cute!') | +---------------------------------------------+ | 0 | +---------------------------------------------+
Przestrzenie
Znak spacji nadal jest ciągiem, więc możemy w podłańcuch umieszczać spacje, nawet jeśli jest to jedyny znak:
SELECT POSITION(' ' IN 'My dog');
Wynik:
+---------------------------+ | POSITION(' ' IN 'My dog') | +---------------------------+ | 3 | +---------------------------+
Pusty ciąg
Oto, co się dzieje, gdy podciąg jest pustym ciągiem:
SELECT POSITION('' IN 'My dog');
Wynik:
+--------------------------+ | POSITION('' IN 'My dog') | +--------------------------+ | 1 | +--------------------------+
Brak dopasowania
Jeśli podciąg nie zostanie znaleziony w ciągu, POSITION()
zwraca 0
:
SELECT position('cat' IN 'My dog');
Wynik:
+-----------------------------+ | position('cat' IN 'My dog') | +-----------------------------+ | 0 | +-----------------------------+
Argumenty zerowe
Podanie null
dla dowolnego z argumentów daje wynik null
:
SELECT
POSITION(null IN 'My dog'),
POSITION('dog' IN null);
Wynik:
+----------------------------+-------------------------+ | POSITION(null IN 'My dog') | POSITION('dog' IN null) | +----------------------------+-------------------------+ | NULL | NULL | +----------------------------+-------------------------+
Podanie niewłaściwej liczby argumentów
Wywołanie POSITION()
z niewłaściwą liczbą argumentów lub bez przekazania jakichkolwiek argumentów powoduje błąd:
SELECT POSITION('dog');
Wynik:
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