我在表格视图中有一列:165,75,44,458,458,42,45 该列包含查看链接的user_id。 我想用逗号分隔符将其爆炸并计算ID
我尝试过,但是它只计算所有字符。
SQL:
SELECT LENGTH(views) FROM questions WHERE question_id=1;
这是我要在SQL中执行的PHP版本
$viewers_ids = "165,75,44,458,458,42,45";
$num_of_views = count(array_filter(explode(",", $viewers_ids)));
答案 0 :(得分:4)
您可以计算逗号:
=COUNTIF(B2:INDEX(B:B, AGGREGATE(14, 7, ROW($1:2)/(B$1:B2<>B2), 1)), B2)
也就是说,您应该修复数据结构。您不应该在字符串列中存储多个数字ID,这在许多方面都是错误的。您应该使用联结/关联表。
答案 1 :(得分:0)
尝试了另一种方法,即替换,
以外的所有字符
Select
Length(REGEXP_REPLACE
(views,'[^\,]*',''))+1 from
table
答案 2 :(得分:0)
我的直接反应是您的表结构需要更改-我希望还有另一个表将问题链接和user_id与“ visit_id”连接起来,并在views表中使用visit_id作为外键。
我的第二个反应是,这对于shell实用程序来说是一个完美的问题-可能是sed /,// g然后是wc -w,或者是小的awk脚本。
要在SQL中执行此操作,我可能会尝试弄清楚如何计算逗号的数量并加一个。该答案为您提供了一个函数,该函数将逗号替换为“”,然后从未修改的字段的长度中减去长度:Count the number of occurrences of a string in a VARCHAR field?