这几天使用的MySQ函数

 这几天写代码使用了几个MySQL的函数,发现有些细节还是需要明白的,因为不知这些点浪费了很多时间。

  • between   <factor1> and <factor2>       

              限制范围在[factor1,factor2](包括端点),factor1<factor2(否则返回空);

  • avg 

              求平均值的,如果我想求一段时间内某个字段在每一天的平均值(即求n天内这个字段的平均值)应该怎么写呢?注意后面的红色字体部分。例如:table a (tag  char,weight int,time date);   有下面的sql语句:select avg(weight) from a where time between time1 and time2 and tag=t;  我以为这句是可以的,你呢?

              而实际结果是错误的,因为avg求平均值是根据符合where子句限制的记录数目的,在上面的语句中如果某一个time上没有满足tag=t,那么计算平均值时就不会把该条记录放进来,这样分母就会少了1,所以正确的方法应该是这样的:select sum(weight)/(time2-time1+1) from a where time between time1 and time2 and tag=t;

  • adddate(date,factor)

              将一个日期类型的字段加上一定的天数,那么如何减去一定的天数呢?这个取决于factor的符号,正的就是加,负的就是减了。

  • length()与substring()

            前者求长度,后者求子串,那么它们的区别在哪里呢?如果你写成substring('中国',1,1),它会返回什么呢?会是返回‘中’吗,结果返回的是一个'?',这是因为中文长度的计算与英文不同,一个英文字母长度为1,而一个中文字符长度为2(其实在实际的表中跟字段的类型有关的),如果我想返回‘中’应该怎么写呢?我不知道……

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值