Да кажем, че имам тези две променливи в MySQL
SET data1 = "1,2,3,apple,4,5";
SET data2 = "apple,orange,5";
Как мога да получа броя елементи, които се показват на тези две променливи?
Отговори:
0 за отговор № 1Ако наистина трябва да направите това в MySQL, можете да създадете съхранена процедура (или съхранена функция), в която:
- създайте временна таблица (защото съхраняваните рутини на MySQL не могат да се справят с масиви, така че трябва да използвате временната таблица като масив)
- създавам ДОКАТО за да анализирате струните си LOCATE (), НАЛЯВО() и НАДЯСНО () функции (Ръководство на MySQL: Струнни функции), вмъквайки всяка стойност в временната таблица
- изпълнете необходимото избиране (с кръстовища и т.н.) от тази временна таблица
Но това решение е далеч от елегантен. Съхраняването на маркери в отделна таблица (както е споменато по-горе, един маркер на ред) е много по-за предпочитане.
0 за отговор № 2
Няма начин да се взриви списъкът и да се броят елементите. Единственият начин да го взриви в родния си език, манипулиращ стойността:
Пример в php:
$values = mysql_result();
echo count(explode(",", $values));
Другият начин е да поставите всички тагове в отделна таблица и да ги свържете в конфигурационна маса, след което можете да направите нещо подобно:
select
count(*)
from
items
join
pivot on pivot.item_id = items.id
join
tags on pivot.tag_id = tags.id
where
item.id = {itemid}