MYSQL-是否计数以逗号分隔的项目

MYSQL-是否计数以逗号分隔的项目,mysql,Mysql,我有一个tinytext字段,它可以包含3个不同的值,格式如下: 空的 “X”或“Y”(其中X和Y可以是任意数字) “A,B,C,D”(其中A,B,C和D可以是任意数字) 我想查询该表并计算是否用逗号分隔的项目数 例如,使用以下行: 42 空的 42,56,99 2410090 那么预期的计数将是6 我找不到正确的查询。好的,这是测试数据: mysql> create table t (f tinytext); mysql> insert into t values ('42

我有一个tinytext字段,它可以包含3个不同的值,格式如下:

  • 空的
  • “X”或“Y”(其中X和Y可以是任意数字)
  • “A,B,C,D”(其中A,B,C和D可以是任意数字)
我想查询该表并计算是否用逗号分隔的项目数

例如,使用以下行:

  • 42
  • 空的
  • 42,56,99
  • 2410090
那么预期的计数将是6


我找不到正确的查询。

好的,这是测试数据:

mysql> create table t (f tinytext);
mysql> insert into t values ('42'), (null), ('42,56,99'), ('24,10090');
mysql> select * from t;
+----------+
| f        |
+----------+
| 42       |
| NULL     |
| 42,56,99 |
| 24,10090 |
+----------+
您可以计算字符串中有多少个数字,作为字符串长度与删除逗号的字符串长度之差(列表中第一个数字加1)

然后使用SUM()得到总数。SUM()忽略空值

mysql> select sum(1+length(f)-length(replace(f,',',''))) from t;
+--------------------------------------------+
| sum(1+length(f)-length(replace(f,',',''))) |
+--------------------------------------------+
|                                          6 |
+--------------------------------------------+

如果您不使用此函数,这将更容易。

没有查询。您必须编写一个过程来拆分文本并计算出现次数。如果您使用数据库,您永远不会存储使用逗号分隔的数据。这就像买了一辆车,然后把它推到路上,而不是开车,认为这是一个很好的工具使用。用火杀死该设计,将数据存储在行中,不要将它们粘贴在以逗号分隔的列中。数据库不是文本文件,不需要这样使用。感谢您的评论。。。你们两个。我会设法找到另一种方法。@草莓,请看我添加的链接。@Bill:你的方法很有趣。我想我将以不同的方式使用DB。谢谢你的链接。@user3833734,谢谢,我很乐意帮忙。请记住,按照惯例,堆栈溢出会向上投票或接受帮助您的答案。
mysql> select sum(1+length(f)-length(replace(f,',',''))) from t;
+--------------------------------------------+
| sum(1+length(f)-length(replace(f,',',''))) |
+--------------------------------------------+
|                                          6 |
+--------------------------------------------+