/ / Как да разделим стойността с помощта на запетая SQL? - mysql

Как да разделям стойността с помощта на запетая ми SQL? - mysql

Графата „Моята таблица“ съдържа редове като тази 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)]

във вашата заявка. Как изглежда вашата маса? Може да мога да помогна повече, ако знам как изглежда