Mysql 如何使用逗号分隔值?

Mysql 如何使用逗号分隔值?,mysql,Mysql,“我的表”列中有像这样的行1001、1002、1003等等,它们之间用逗号分隔。每列中可能有1个或多个逗号分隔的值。我需要表中这些逗号分隔值的总数。例如,如果我的表有两行,一行有1001、1002、1003、1004,另一行有1001、1005,我应该得到的输出是6,即4+2。请协助您是否尝试使用count()函数?如果需要,可以指定哪些行 .row[COUNT(name)] 在您的查询中。你的桌子看起来像什么?如果我知道它看起来是什么样子,我可能会提供更多帮助。mysql中没有计算字符出现次

“我的表”列中有像这样的行1001、1002、1003等等,它们之间用逗号分隔。每列中可能有1个或多个逗号分隔的值。我需要表中这些逗号分隔值的总数。例如,如果我的表有两行,一行有1001、1002、1003、1004,另一行有1001、1005,我应该得到的输出是6,即4+2。请协助

您是否尝试使用count()函数?如果需要,可以指定哪些行

.row[COUNT(name)]

在您的查询中。你的桌子看起来像什么?如果我知道它看起来是什么样子,我可能会提供更多帮助。

mysql中没有计算字符出现次数的函数。但是你可以用空来替换每个逗号。然后计算长度的差,这将得到逗号的数量,比值的数量少一个

select
( LENGTH(col1) - LENGTH(REPLACE(col1, ',', '')) + 1 )
+ ( LENGTH(col2) - LENGTH(REPLACE(col2, ',', '')) + 1 ) 
AS valCount
from T;
(没有明确地测试,但至少有一些非常类似的东西可以完成这项工作。)

试试:

SELECT SUM(LEN(ColumnName) - LEN(REPLACE(ColumnName, ',', ''))) FROM TableName

这是在服务器端脚本中比数据库本身更容易访问数据库的任务之一。假设您已经将逗号分隔的字符串分配给数组(其中,
$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);
这是可能的,有了MySQL中的创造性解决方案(比如来自MySQL的解决方案),但似乎更容易、更简洁地用PHP实现


参考资料:


你真的应该考虑一下,它会使你的应用程序更容易建立、维护和(通常)更快。它必须在MySQL或者PHP(或者另一种服务器端语言)中吗?可以接受吗?这里有一个指向MySQL字符串函数的链接:。我看到的函数可以找到字段中可以找到逗号的位置,但不是用多少逗号。COUNT来计算行数,而不是行中出现的逗号。我想他需要计算“数字”的数量如果有一行指定了数据的位置,COUNT将返回items@Xiphos:OP有一个字段,字面上包含
1,2,3,4,…
。该字段不是多行,每个字段中有一个值。好主意。我认为您需要对其求和,并且可能需要不同的列作为不同的co不过是unts。他要的是总计数。这是每行。好吧,我明白你的意思了:他从说“每列中的值”开始。我从另一个角度看,他的例子说他是在两行中求和数据。