Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查找字符串中匹配表达式的数目_Mysql_Regex_Count_Match - Fatal编程技术网

Mysql 查找字符串中匹配表达式的数目

Mysql 查找字符串中匹配表达式的数目,mysql,regex,count,match,Mysql,Regex,Count,Match,我的mySQL数据库中有一列,以逗号分隔的列表存储日期。由于该数据库的需要和动态结构,它需要是一个逗号分隔的列表,格式如下: date,date,date,date,date,date,date,date 真实的场景可能如下所示: 2012-01-01,2012-03-12,,,,,, 我需要能够在查询中计算此列表中的日期数。对于上述示例集,集合中的日期数为两个2012-01-01和2012-03-12。出于我的目的,我需要知道这个列表中是否有8个日期。我找到了不同的解决方案,我成功地做到了

我的mySQL数据库中有一列,以逗号分隔的列表存储日期。由于该数据库的需要和动态结构,它需要是一个逗号分隔的列表,格式如下:

date,date,date,date,date,date,date,date
真实的场景可能如下所示:

2012-01-01,2012-03-12,,,,,,
我需要能够在查询中计算此列表中的日期数。对于上述示例集,集合中的日期数为两个2012-01-01和2012-03-12。出于我的目的,我需要知道这个列表中是否有8个日期。我找到了不同的解决方案,我成功地做到了这一点,给出了数字1在字符串中的时间:

LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, '1', ''))
如果我将“1”改为正则表达式,则无法使其工作。问题的一部分是,我也找不到一个正则表达式的解决方案,它可以精确地找到//而不是日期的任何其他变体

我仍在学习mySQL和regex,希望能得到一些帮助


谢谢。

您是否可以用php实现这一点

将结果放入变量中,然后:

$variable=date,date,date,date,date,date,date,date;
$array=explode(",",$variable);
$count=count($array);
这样做的目的是用逗号分割字符串,并用explode将其插入数组,然后count计算数组中的元素数量

,

另外,对于其他解决方案:

长度列-长度替换列“1”

难道不可能简单地做到:

长度u列uu-长度替换u列uu,','


然后计算逗号的数量,因为您说格式将是以逗号分隔的日期,并使用连字符作为分隔符,如果您得到7个逗号的数量,您将知道您有8个日期。

您是否可以使用php执行此操作

将结果放入变量中,然后:

$variable=date,date,date,date,date,date,date,date;
$array=explode(",",$variable);
$count=count($array);
这样做的目的是用逗号分割字符串,并用explode将其插入数组,然后count计算数组中的元素数量

,

另外,对于其他解决方案:

长度列-长度替换列“1”

难道不可能简单地做到:

长度u列uu-长度替换u列uu,','


然后计算逗号的数量,因为你说格式是以逗号分隔的日期,用连字符作为分隔符,如果你计算了7个逗号,你就知道你有8个日期。

一个包含8个日期的字符串不是正好87个字符长吗

如果您关心字符串中的实际值


哦,重新设计您的模式。

一个包含8个日期的字符串不是正好有87个字符长吗

如果您关心字符串中的实际值


哦,重新设计您的模式。

我完全无法想象一个原因,为什么需要在列中使用逗号分隔的列表。无意冒犯,但这种动力在哪里?改变数据库设计!100%同意@tombom;但是作为一个纯粹的智力练习,我想你可以数一数连字符,然后除以二…@tombom我们必须收集很多临时表单的日期。我不想为我们需要收集的26个不同日期制作一个新专栏。取而代之的是,我尝试使用三列来表示包含逗号分隔的日期列表的三个表单,这样我们就不必让26个不同的列组成一个表。当每列中有一定数量的日期时,该列/表格即告完成。感谢您对结构的任何帮助@JonnyJesperson创建一个新问题并显示当前的db模式。我绝对无法想象一个单一的原因,为什么需要在一列中有一个逗号分隔的列表。无意冒犯,但这种动力在哪里?改变数据库设计!100%同意@tombom;但是作为一个纯粹的智力练习,我想你可以数一数连字符,然后除以二…@tombom我们必须收集很多临时表单的日期。我不想为我们需要收集的26个不同日期制作一个新专栏。取而代之的是,我尝试使用三列来表示包含逗号分隔的日期列表的三个表单,这样我们就不必让26个不同的列组成一个表。当每列中有一定数量的日期时,该列/表格即告完成。感谢您对结构的任何帮助@JonnyJesperson创建一个新问题并显示当前的db模式。并接受下面的一个答案。