场景:在数据库中,需要对某一结果进行排序,排序时按某几个字段按不同的权重排序,但其中一个字段的最大权重限制到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 |