MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Разликата между INSTR() срещу LOCATE() в MariaDB

MariaDB има INSTR() функция, както и LOCATE() функция. И двете функции изглежда правят абсолютно едно и също нещо – връщат позицията на подниз в низ.

Има обаче разлика.

Разликите

Можем да видим разликата между тези две функции, като разгледаме техния синтаксис, както и няколко примера.

Синтаксис

Синтаксисът за INSTR() :

INSTR(str,substr)

Двата приети синтаксиса за LOCATE() :

LOCATE(substr,str)
LOCATE(substr,str,pos)

Където str е низът, substr е поднизът за намиране и pos е позицията за започване на търсенето.

Разликата между двете функции може да бъде обобщена по следния начин:

  • LOCATE() функцията приема същите два аргумента, които INSTR() приема, но в обратен ред.
  • LOCATE() функцията приема незадължителен трети аргумент, за да посочи началната позиция за търсене. INSTR() функцията не приема такъв аргумент.

Така че LOCATE() предоставя допълнителна функционалност, която INSTR() не предоставя.

Пример 1 – Първата разлика

Ето пример, който показва обратния ред, в който двете функции приемат своите аргументи:

SELECT 
    INSTR('Disconnect', 'con'),
    LOCATE('con', 'Disconnect');

Резултат:

+----------------------------+-----------------------------+
| INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') |
+----------------------------+-----------------------------+
|                          4 |                           4 |
+----------------------------+-----------------------------+

Пример 2 – Втората разлика

Ето пример, който показва допълнителната функционалност, която LOCATE() предоставя през INSTR() :

SELECT 
    INSTR('My cat is a good cat', 'cat') AS "INSTR()",
    LOCATE('cat', 'My cat is a good cat') AS "LOCATE()",
    LOCATE('cat', 'My cat is a good cat', 10) AS "LOCATE() with 3rd Argument";

Резултат:

+---------+----------+----------------------------+
| INSTR() | LOCATE() | LOCATE() with 3rd Argument |
+---------+----------+----------------------------+
|       4 |        4 |                         18 |
+---------+----------+----------------------------+

Този пример подчертава факта, че LOCATE() функцията ни предоставя незадължителен трети аргумент. Този аргумент ни позволява да посочим начална позиция за търсенето, което означава, че не сме ограничени само до първото появяване в целия низ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON_DETAILED() Обяснено

  2. Сравняване на MariaDB сървър с MariaDB клъстер

  3. Как работи CURDATE() в MariaDB

  4. MariaDB SUBSTR() Обяснено

  5. Как да конфигурирате SELinux за системи, базирани на MySQL (MySQL/MariaDB репликация + Galera)