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

Как да върнете позицията на елемент от списък в MySQL

В MySQL можете да използвате FIND_IN_SET() функция за връщане на индекса на даден елемент от списък в рамките на списък с низове (например „item1, item2, item3,...“).

Функцията приема два аргумента; низът за намиране и списъкът за търсене.

Синтаксисът е така:

FIND_IN_SET(str,strlist)

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

Пример

Ето един пример:

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';

Резултат:

+--------+
| Result |
+--------+
|      2 |
+--------+

Това връща 2 защото това е позицията на низа Dog в списъка с низове.

Имайте предвид, че се връща само индексът на първото появяване. Така че, ако е имало друго появяване на Dog след това първо ще получим същия резултат:

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';

Резултат:

+--------+
| Result |
+--------+
|      2 |
+--------+

Няма съвпадения

Когато низът не е намерен, резултат от 0 се връща:

SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';

Резултат:

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

Ами ако първият аргумент съдържа запетая?

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

Ето един пример:

SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';

Резултат:

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

В този пример може да се очаква, че ще върне положителен резултат (при условие Cat,Dog всъщност е в списъка), но запетаята се използва като разделител в списъка и следователно съвпадението на низовете не работи.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Приставката за удостоверяване „caching_sha2_password“ не се поддържа

  2. Как да намерите последния ден от месеца за дадена дата в MySQL

  3. 1064 грешка в CREATE TABLE ... TYPE=MYISAM

  4. Групиране в интервал от 5 минути във времеви диапазон

  5. SQLAlchemy ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИРАН КЛЮЧ