SQL中的爆炸和计数

jam*_*uro 1 mysql sql

我在表视图中有列:165,75,44,458,458,42,45 此列包含查看链接的 user_ids。我想用逗号分隔符分解它并计算 ids

我试过这个,但它只计算所有的字符。

查询语句:

SELECT LENGTH(views) FROM questions WHERE question_id=1;
Run Code Online (Sandbox Code Playgroud)

这是我想在SQL中做的PHP版本

$viewers_ids  = "165,75,44,458,458,42,45";
$num_of_views = count(array_filter(explode(",", $viewers_ids)));
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

您可以计算逗号:

select 1 + length(views) - length(replace(views, ',', ''))
Run Code Online (Sandbox Code Playgroud)

也就是说,你应该修复你的数据结构。您不应该在字符串列中存储多个数字 id——这在很多方面都是错误的。您应该使用连接/关联表。