【发布时间】:2012-08-30 16:33:58
【问题描述】:
我的 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 和正则表达式,正在寻求帮助。
谢谢。
【问题讨论】:
-
我绝对无法想象一个单一的原因,为什么需要在列中使用逗号分隔的列表。没有冒犯,但这种“动态”在哪里?更改数据库设计!
-
100% 同意@tombom;但作为一项纯粹的智力练习,我想你可以数连字符并除以二......
-
@tombom 我们必须为临时表格收集很多日期。我不想为我们需要收集的 26 个不同日期创建一个新专栏。相反,我尝试使用包含逗号分隔的日期列表的三列(代表 3 个表格),因此我们不必有 26 个不同的列粘在表格中。当每列中有一定数量的日期时,列/表格就完成了。感谢您对结构的任何帮助!
-
@JonnyJesperson 创建一个新问题并显示您当前的数据库架构。并接受以下答案之一。