кодесурса
«MYSQL

Функция MySQL FIND_IN_SET ()

script1adsense2code
script1adsense3code

Функция FIND_IN_SET ()

MySQL FIND_IN_SET () возвращает позицию строки, если она присутствует (как подстрока) в списке строк. Сам список строк представляет собой строку, содержащую подстроки, разделенные символом ',' (запятая).

Эта функция возвращает 0, если строка поиска не существует в списке строк, и возвращает NULL, если один из аргументов равен NULL.

Синтаксис:

 FIND_IN_SET (строка поиска, список строк)

аргументы

название Описание
строка поиска Строка, которую нужно искать в следующем списке аргументов.
список строк Список строк для поиска, если они содержат строку поиска.

Синтаксическая диаграмма:

«MySQL

Версия MySQL: 5.6

Видео презентация

Иллюстрированная презентация

«MySQL

Пример: функция FIND_IN_SET ()

Следующая инструкция MySQL находит строку поиска 'ank' на втором месте в списке строк. Так что возвращается 2.

Код:

SELECT FIND_IN_SET('ank','b,ank,of,monk');

Пример вывода:

 mysql> SELECT FIND_IN_SET ('ank', 'b, ank, of, monk'); 
+ ------------------------------------ +
| FIND_IN_SET ('ank', 'b, ank, of, monk') |
+ ------------------------------------ +
| 2 | 
+ ------------------------------------ +
1 ряд в наборе (0,00 сек)

Пример: MySQL FIND_IN_SET с WHERE CLAUSE

Следующая инструкция MySQL находит строку поиска в виде первых 7 символов из столбца aut_name автора таблицы в указанной строке, как указано в аргументе, и извлекает все столбцы из соответствующих строк.

Код:

SELECT * 
FROM author 
WHERE FIND_IN_SET(left(aut_name,7),'William,steven,jung,angalo')>0;

Пример таблицы: автор


Пример вывода:

 + -------- + ----------------- + --------- + ----------- +
| aut_id | aut_name | страна | home_city |
+ -------- + ----------------- + --------- + ----------- +
| AUT001 | Уильям Нортон | Великобритания | Кембридж | 
| AUT002 | Уильям Моэм | Канада | Торонто | 
| AUT003 | Уильям Энтони | Великобритания | Лидс | 
+ -------- + ----------------- + --------- + ----------- +
3 ряда в наборе (0,13 сек)

Разница между функцией LOCATE () и FIND_IN_SET ()

При использовании функции LOCATE () для целых чисел, предположим, что нам нужно 1 для возврата из LOCATE (), если целое число 3 находится в наборе '1,2,3,4,5, ..', можно написать следующие команды MySQL:

Код:

SELECT IF(LOCATE(3,'1,2,3,4,5,6,7,8,9')>0,1,0);

Пример вывода:

 mysql> SELECT IF (LOCATE (3, '1,2,3,4,5,6,7,8,9')> 0,1,0);
+ ----------------------------------------- +
| IF (LOCATE (3, '1,2,3,4,5,6,7,8,9')> 0,1,0) |
+ ----------------------------------------- +
| 1 | 
+ ----------------------------------------- +
1 ряд в наборе (0,06 сек)

Вышеприведенная команда работает правильно, потому что набор содержит число 3, но если мы напишем следующие команды, посмотрим, что произошло -

Код:

SELECT IF(LOCATE(3,'11,12,13,14,15')>0,1,0);

Пример вывода:

 mysql> SELECT IF (LOCATE (3, '11, 12,13,14,15 ')> 0,1,0);
+ -------------------------------------- +
| IF (LOCATE (3, '11, 12,13,14,15 ')> 0,1,0) |
+ -------------------------------------- +
| 1 | 
+ -------------------------------------- +
1 ряд в наборе (0,02 сек)

Здесь мы видим из приведенного выше примера, что 3 не представлен как число три (3) в данном наборе, хотя LOCATE () возвращает 1, потому что LOCATE () рассматривает данный набор как строку, но не как значение, разделенное запятыми, и 3 присутствующих в номере 13.

Чтобы избежать такой ситуации, вы можете использовать функцию FIND_IN_SET (). Вот пример ниже -

Код:

SELECT IF(FIND_IN_SET(3,'11,12,13,4,5,6,7,8,9')>0,1,0);

Пример вывода:

 mysql> SELECT IF (FIND_IN_SET (3, '11, 12,13,4,5,6,7,8,9 ')> 0,1,0);
+ ------------------------------------------------- +
| IF (FIND_IN_SET (3, '11, 12,13,4,5,6,7,8,9 ')> 0,1,0) |
+ ------------------------------------------------- +
| 0 | 
+ ------------------------------------------------- +
1 ряд в наборе (0,05 сек)

Таким образом, функция LOCATE () очень подходит для строки, но не настолько подходит для целых чисел.

Все строковые функции

«MySQL

Предыдущая: ПОЛЕ
Далее: ФОРМАТ

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code