如果不使用判断操作保证任意一个数如果大于30则为30,否则为原值(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

时间: 2024-08-07 16:56:10

如果不使用判断操作保证任意一个数如果大于30则为30,否则为原值(SQL中排序时对字段值进行最大限制)的相关文章

两种方法实现队满和队空的判断操作(循环队列)

本周的作业要求: 1.给出循环队列的存储结构定义. 2.完成循环队列的基本操作函数. 1)      初始化循环队列: 2)      建立循环队列: 3)      实现入队和出队操作: 4)     采用下面两种方法实现对满和队空的判断操作: 方法一:修改队满条件,浪费一个元素空间,队满时数组中只有一个空闲单元(必做):   方法二:设置标志flag,当front==rear且flag=0时为队空,当front==rear且flag=1时为队满(必做): 3.编写主函数实现基本操作函数功能,

求数组中和为给定值的任意两个数

转载请注明出处:http://blog.csdn.net/ns_code/article/details/24933341     题目: 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出任意一对即可. 例如输入数组1.2.4.7.11.15和数字15.由于4+11=15,因此输出4和11.     思路: 最直接的做法是暴力法,两个for循环,时间复杂度为O(n*n),但是这样没有充

牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。 牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。 这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。

牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等.问是否可行.牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍.这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次.输入描述: 输入一个正整数N (N <= 50) 接下来一行输入N个正整数,每个数均小于等于1e9. 输出描述: 假如经过若干次操作可以使得N个数都相等,那么输出"YES", 否则输出"NO" 输入例子: 2 1 2 输出例子: YES

hdu5795 A Simple Nim 求nim求法,打表找sg值规律 给定n堆石子,每堆有若干石子,两个人轮流操作,每次操作可以选择任意一堆取走任意个石子(不可以为空) 或者选择一堆,把它分成三堆,每堆不为空。求先手必胜,还是后手必胜。

/** 题目:A Simple Nim 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5795 题意:给定n堆石子,每堆有若干石子,两个人轮流操作,每次操作可以选择任意一堆取走任意个石子(不可以为空) 或者选择一堆,把它分成三堆,每堆不为空.求先手必胜,还是后手必胜. 思路: 组合游戏Nim: 计算出每一堆的sg值,然后取异或.异或和>0那么先手,否则后手. 对于每一堆的sg值求解方法: 设:sg(x)表示x个石子的sg值.sg(x) = mex{sg

触发器中判断操作是Insert还是Update还是Delete

在Sql Server触发器中判断操作是Insert还是Update还是Delete DECLARE @IsInsert bit, @IsUpdate bit, @IsDelete bit IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted) SET @IsInsert = 1 ELSE SET @IsInsert = 0 IF EXISTS(SELECT 1 FROM inserted) AND EXIS

C#三种判断数据库中取出的字段值是否为空(NULL) 的方法

最近操作数据库,需要判断返回的字段值是否为空,在网上收集了3种方法供大家参考 1 通过System.DBNull判断,网上大部分都使用这个方法. 复制代码代码如下: DataTable dt;                               //假设字段为name, dt已经保存了数据dt.rows[0]["name"] == System.DBNull.Value;  //判断第一行数据的name字段是否为空 2 通过IsNull判断 复制代码代码如下: DataTabl

SQL点滴33—SQL中的字符串操作

原文:SQL点滴33-SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大.小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 select lower('I AM A STUDENT !') select upper('i am a student !') 截去字符串左.右侧空格                                    

SQL中的高级数据操作

一.新增数据 1. 主键冲突:更新和替换 ① insert into 表名 [(字段列表)] values (值列表) on duplicate key update 字段 = 新值, 字段 = 值, ...; -- 更新 ② replace into 表名 [(字段列表)] values (值列表); -- 替换 2. 蠕虫复制 create table 表名A like 数据库.表名B; -- 从已有表中复制表结构(不复制数据), 如表B与表A在同一数据库,可活力数据库名; insert i

编写一个宏,实现判断数组a元素的个数

#include <iostream> using namespace std; #define TestArrayLengthA(A) sizeof(A)/sizeof(*A) #define TestArrayLengthB(B) sizeof(B)/sizeof(B[0]) //这样测出的是数组可以放多少个元素,比如Array[100],他返回的是100, //不论你初始化还是没有初始化 int TestArrayLength(T *a) { int count = 0; T *p =