搜索逗号分隔的mysql字段的最佳方法

时间:2011-08-21 20:30:59

标签: php mysql

我被赋予了将2个mysql字段合并为一个然后进行编译以便可以搜索新字段的任务。我必须在我的数据库中合并的两个字段,其中注册了上一年和当前年份。这些字段所在的格式为dd / mm / yyyy。我将这些字段组合成一个名为Years Registered的字段,其格式仍然是dd / mm / yyyy,但是用逗号(,)分隔的年份。我想知道如何在这个专栏上执行几种不同类型的查询。我必须执行的mysql查询是:Show All(),在日期之间显示全部:mm / yyyy和mm / yyyy,之前:mm / yyyy,之后:mm / yyyy

非常感谢任何帮助。

感谢您的时间。

3 个答案:

答案 0 :(得分:2)

不要这样做! 我不知道它是如何完全可能的(我假设存储过程中的一些SQL Stringoperations和Datefunctions),但它肯定会破坏数据库的性能。 使用这种关系。

这是:

  • 方式更快
  • 更易扩展(例如,三个日期..)
  • 更容易编码
  • 更容易理解
  • 更容易移植到其他数据库

如果您必须支持现有平台的问题,请使用支持两种备选方案的代码库。与使用以逗号分隔的列表

相比,这仍然更容易维护

答案 1 :(得分:2)

我不喜欢它,但如果您需要,可以使用下一个解决方案:

使用start_date = STR_TO_DATE提取日期(SUBSTRING(your_new_field,1,10)) 和end_date = STR_TO_DATE(SUBSTRING(your_new_field,12,10))

答案 2 :(得分:0)

您的数据库将破坏“首次规范化表格(1NF)”并且高度无效。

为了搜索选定的日期,您要么必须查询表中的所有行,要么使用LIKE,这也非常迟缓。

无论是谁要求您这样做,都应该阅读有关数据库规范化的this article

使用两个DATEDATETIME字段并在MySQL之外格式化它们有什么问题?