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

3 начина за намиране на позицията на подниз в низ в MySQL

MySQL има редица низови функции, които връщат позицията на подниз в низ. По-конкретно, те връщат позицията на първото появяване в низа (или първото появяване след дадена начална точка).

Функциите, които имам предвид, са следните:

  • INSTR()
  • LOCATE()
  • POSITION()

По-долу е даден преглед на всеки един от тях.

INSTR()

INSTR() функцията връща първото появяване на подниз в низ.

Ето синтаксиса:

INSTR(str,substr)

Където str е низът, който искате да търсите, и substr е поднизът, който търсите.

Пример

SELECT INSTR('Cats and dogs like to run', 'dogs') AS Result;

Резултат:

+--------+
| Result |
+--------+
|     10 |
+--------+

В този случай низът dogs започва от позиция 10.

Ако поднизът не е намерен, резултат от 0 се връща:

SELECT INSTR('Cats and dogs like to run', 'rabbit') AS Result;

Резултат:

+--------+
| Result |
+--------+
|      0 |
+--------+

LOCATE()

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

Следователно можете да го използвате по един от следните начини:

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

Първият синтаксис е точно като INTSR() синтаксис, с изключение на str и substr се разменят.

Вторият синтаксис добавя незадължителния pos аргумент, който ви позволява да посочите позиция, за да започнете търсенето.

Пример за първи синтаксис

Ето пример за използване на първия синтаксис:

SELECT LOCATE('dogs', 'Cats and dogs like to run') AS Result;

Резултат:

+--------+
| Result |
+--------+
|     10 |
+--------+

Пример за втори синтаксис

Ето пример, в който посочваме начална позиция, за да започнем търсенето:

SELECT LOCATE('cat', 'Cats, cats, and more cats!', 6) AS Result;

Резултат:

+--------+
| Result |
+--------+
|      7 |
+--------+

Можем да видим, че низът cat може да се намери на позиция 1, но ние посочихме 6 като изходна позиция. Следователно позицията на следващото появяване на този низ беше тази, която беше върната.

Както при INSTR() функция, ако поднизът не е намерен, 0 се връща.

ПОЗИЦИЯ()

POSITION() функцията е синоним на LOCATE() , но с малко по-различен синтаксис.

Ето синтаксиса:

POSITION(substr IN str)

Това е синоним на следното:

LOCATE(substr,str)

Така че бихме могли да пренапишем един от предишните примери, както следва:

SELECT POSITION('dogs' IN 'Cats and dogs like to run') AS Result;

Резултат:

+--------+
| Result |
+--------+
|     10 |
+--------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да анотирате полето за автоматично нарастване на MYSQL с анотации на JPA

  2. Какво е обратното на GROUP_CONCAT в MySQL?

  3. Как да направите автоматично увеличение на първичния ключ на MySQL таблицата с някакъв префикс

  4. Как да деинсталирате MySQL от Mac OS X?

  5. JSON_EXTRACT() – Връща данни от JSON документ в MySQL