2

我的 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 和正则表达式,正在寻求帮助。

谢谢。

4

2 回答 2

0

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

如果您担心字符串中的实际值,请将它们拆分出来

哦,重新设计你的架构。

于 2012-09-06T00:47:09.383 回答
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 个日期。

于 2012-09-05T23:51:44.230 回答