设为首页 加入收藏

TOP

如果不使用判断操作保证任意一个数如果大于30则为30,否则为原值(SQL中排序时对字段值进行最大限制)
2015-11-21 01:41:11 来源: 作者: 【 】 浏览:1
Tags:如果 使用 判断 操作 保证 任意 一个数 大于 则为 否则 原值 SQL 排序 时对字 段值 进行 最大 限制

场景:在数据库中,需要对某一结果进行排序,排序时按某几个字段按不同的权重排序,但其中一个字段的最大权重限制到30.

分析:在SQL中是没有a>30?30:a 这样的操作的,只有基本运算(+-*/),逻辑运算(&& || xor )等。

答案:

((a-a%30)&&1)*30 : a小于30时,a-a%30为0,(0&&1)*30的结果为0,a大于等于30时,最终结果为30

(a-a%30) xor 1 :当a大于等于30时,值为0,小于30时,结果为1

((a-a%30) xor 1)*(a%30) : 当a大于等于30时,值为0,小于30时,结果为a

最终:((a-a%30)&&1)*30+((a-a%30) xor 1)*(a%30)

当a小于30时,+号之前的部分运算得到0,之后的运算得到a,相加为a

当a大于等于30时,+号之前的部分运算得到30,之后的运算得到0,相加为30

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ThinkPHP实现对数据库中表的修改.. 下一篇SQL Server 2008中通过SQL获取表..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: