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