如何使用逗号我的SQL分隔值?

时间:2011-07-14 14:41:34

标签: mysql

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

4 个答案:

答案 0 :(得分:3)

mysql中没有函数来计算char出现次数。但是你可以用任何东西替换每个逗号。然后你计算长度的差异,它会给你逗号的数量,这比逗号的数量少一个。

select
( LENGTH(col1) - LENGTH(REPLACE(col1, ',', '')) + 1 )
+ ( LENGTH(col2) - LENGTH(REPLACE(col2, ',', '')) + 1 ) 
AS valCount
from T;

(没有明确地测试,但至少有一些与此类似的东西。)

replace() length()

答案 1 :(得分:2)

尝试:

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

答案 2 :(得分:1)

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

<小时/> 参考文献:

答案 3 :(得分:-1)

您是否尝试过使用count()函数?您可以根据需要指定哪些行。

.row[COUNT(name)]
在您的查询中

。你的桌子是什么样的?如果我知道它的样子,我可以提供更多帮助