Графата „Моята таблица“ съдържа редове като тази 1001, 1002,1003 и т.н., разделени със запетаи. Във всяка колона може да има 1 или повече стойности, разделени със запетая. Имам нужда от общия брой на тези разделени със запетая стойности в таблицата. Например, ако моята таблица има 2 реда, които имат 1001, 1002, 1003, 1004 и друг със 1001, 1005, изходът, който трябва да получа, е 6 т.е. 4 + 2. Моля помогнете
Отговори:
3 за отговор № 1няма функция в mysql да брои charпоявявания. но можете да замените всяка запетая с нищо. и след това изчислявате разликата в дължините, която ще ви даде броя на запетаи, което е по-малко от броя на стойностите.
select
( LENGTH(col1) - LENGTH(REPLACE(col1, ",", "")) + 1 )
+ ( LENGTH(col2) - LENGTH(REPLACE(col2, ",", "")) + 1 )
AS valCount
from T;
(не е проверил това изрично, но поне нещо подобно на това ще свърши работата.)
2 за отговор № 2
Опитвам:
SELECT SUM(LEN(ColumnName) - LEN(REPLACE(ColumnName, ",", ""))) FROM TableName
1 за отговор № 3
Това е една от онези задачи, които ще бъдат много, много по-лесно в скрипта на сървъра, достъп до вашата база данни, отколкото самата база данни. Ако приемем, че вече сте присвоили разделени със запетая низове към масив (където $array[1]
е равен на низ от ред 1:
$array = array("1001, 1002, 1003, 1004", "1001, 1005"); // assigned from database
foreach($array as $k => $v){
$numbersInString[$k] = count(explode(", ", $v));
}
echo implode(" + ",$numbersInString);
Това е възможно с креативни решения (като например тези от Raffael1984), в MySQL, но изглежда много по-лесно и сбито, внедрени в PHP.
/> Препратки:
-1 за отговор № 4
Опитахте ли да използвате функцията count ()? Можете да посочите кои редове, ако е необходимо.
.row[COUNT(name)]
във вашата заявка. Как изглежда вашата маса? Може да мога да помогна повече, ако знам как изглежда