我有一个名为fee
的MySQL列名。 fee
内的值类似于:
Jan,Feb,Mar
或Jan,Feb
...这意味着支付了1月到3月的费用(1月到2月是第2个例子)。
如何计算已支付这些费用的月数?即。对于第一个例子,我希望第二个例子得到3和2。
答案 0 :(得分:1)
如果月份总是由3个字符表示,也许您可以使用
SELECT FLOOR((length(fee)+1)/4) FROM table_name;
我们将月份数表示为 n ,请注意逗号的数量比 n 少1,因为字符串末尾没有一个逗号。所以这个字段的长度即'费用'可以表示为3 * n +(n-1),表示为 N ,所以我们可以将1加到 N 并除以地板向下舍入以获得最接近的整数。在这种情况下可以删除。
SELECT length(fee)+1)/4 FROM table_name;
将得到正确的答案,length()是一个返回字符串长度的函数。