我的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,正在寻求帮助。
感谢。
答案 0 :(得分:0)
你可以用php做到这一点吗?
将结果输入变量,然后:
$variable=date,date,date,date,date,date,date,date;
$array=explode(",",$variable);
$count=count($array);
这样做是用逗号分割你的字符串并将其插入到explode
的数组中,然后count
计算数组中元素的数量。
另外还有其他解决方案:
LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, '1', ''))
不可能简单地做到:
LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, ',', ''))
并获取逗号的计数,因为您说格式将以逗号分隔日期并以连字符作为分隔符,如果您获得7个逗号的计数,您将知道您有8个日期。
答案 1 :(得分:0)