查找字符串mySQL中匹配表达式的数量

时间:2012-09-05 21:40:54

标签: mysql regex count match

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

date,date,date,date,date,date,date,date

真实的设置可能如下所示:

2012-01-01,2012-03-12,,,,,,

我需要能够在查询中计算此列表中的日期数。对于上面设置的示例,集合中的日期数量将为2(2012-01-01& 2012-03-12)。为了我的目的,我需要知道这个列表中是否有8个日期。我找到了不同的解决方案,我在这方面取得了成功,给了我1号字符串的时间:

LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, '1', ''))

如果我将'1'更改为正则表达式,那么我无法让它工作。部分问题是我也找不到正确找到#### / ## / ##的正则表达式的解决方案,而不是日期的任何其他变体。

我还在学习mySQL和regex,正在寻求帮助。

感谢。

2 个答案:

答案 0 :(得分:0)

你可以用php做到这一点吗?

将结果输入变量,然后:

$variable=date,date,date,date,date,date,date,date;
$array=explode(",",$variable);
$count=count($array);

这样做是用逗号分割你的字符串并将其插入到explode的数组中,然后count计算数组中元素的数量。

ExplodeCount

另外还有其他解决方案:

LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, '1', ''))

不可能简单地做到:

LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, ',', ''))

并获取逗号的计数,因为您说格式将以逗号分隔日期并以连字符作为分隔符,如果您获得7个逗号的计数,您将知道您有8个日期。

答案 1 :(得分:0)

其中8个日期的字符串不会长度恰好是87个字符吗?

如果您担心字符串中的实际值split them out

哦,重新设计你的架构。

相关问题