2013-03-21 78 views
2

我有一个名为fee的MySQL列名。里面fee值是一样的东西: Jan,Feb,MarJan,FebMySQL列中的月份名称

...这意味着到三月的费用一月支付(1至2月收取的第二个示例)。

我该如何计算这些费用已支付的月数?即。对于第一个例子,我期望在第二个例子中得到3和2。

+0

您可以拆分字符串并计算项目的数量。然而,我认为一个更好的设计会跟踪支付交易在一个单独的表中,外键连接回该表,并且只查询与主键相关的记录数 – 2013-03-28 03:59:40

回答

1

IF月由3个字符总是代表,也许你可以使用

SELECT FLOOR((length(fee)+1)/4) FROM table_name; 

我们记为ñ个月的数量,注意逗号的数量比ň少1,因为在字符串的末尾没有一个。因此,该字段的长度即'费用'可以表示为3 * n +(n-1),表示为N,所以我们可以将1加到N并除以4。最接近的整数。在这种情况下可以将其删除。

SELECT length(fee)+1)/4 FROM table_name; 

将得到正确答案,length()是返回字符串长度的函数。

+0

如果您的月份总是由3个字符表示,逗号的数量比实际月数少1 – zoujyjs 2013-03-21 10:37:42

+0

是的,它的工作原理!感谢你解释你做了什么。这个有点新。谢谢 。 – 2013-03-21 11:20:23

+0

对不起,这是错误的,我已经更新了结果 – zoujyjs 2013-03-21 11:42:14