2016-01-13 3 views
3

У меня есть простой массив с некоторыми значениями:Сколько значений массива в строке MySQL

$firstArray = array (
    ['val1'] => 'a', 
    ['val2'] => 'b', 
    ['val3'] => 'c' 
); 

, и я хотел бы найти, сколько значений этого массива появляются в каждой строке таблицы MySQL, как этот:

| ID | Name | Val | 
| 01 | voice1 | a,c,d,e | // it should return 2 (a and c) 
| 02 | voice2 | a,b,c,d,f | // it should return 3 (a,b and c) 

Лучше всего иметь массив с идентификатором, именем и количеством значений.

ответ

2

Вы можете использовать FIND_IN_SET, который вернет вам позицию совпадающего значения и преобразует ее в 1 или 0 с помощью функции SIGN.

select 
    SIGN(FIND_IN_SET('a', texte)) + 
    SIGN(FIND_IN_SET('b', texte)) + 
    SIGN(FIND_IN_SET('c', texte)) 
from your_table; 

Это возвращает именно то, что вы ожидали от своего тестового набора данных.

С уважением,

+0

Спасибо и извините за задержку! – DavyJones

+0

Извините ... часть вопроса была «Лучше всего иметь массив с идентификатором, именем и количеством значений» ... как его получить? – DavyJones

+0

Вы просто должны добавить: «Идентификатор, имя» сразу после выбора. – Orden

Смежные вопросы