Ⅰ sql 取值范围
也就是说下边界不一定是0,可能出现-1000,或者-100000,那么就写一个很小的数,比如 -999999999999,我就不信有比这个还小的。
或者分开写用or连接
select * from wap_shiwu_point_info p where p.isvalid=1 and (p.shiwu_discount_points between 0 and #{userablePoints} or p.shiwu_discount_points <=0)
p.shiwu_discount_points <=0应该是没有问题的吧。
或者把<=分开,分成<和等于,这样可能也能解决问题,无非就是换种写法而已。
Ⅱ SQL语句怎样查询一个范围
SQL语句通过“BETWEEN…AND…”语法来查询一个范围。
WHERE子句设置查询条件,过滤掉不需要的数据行。其范围运算符“BETWEEN…AND…”表示表达式值是否在指定的范围内,类似的“NOT BETWEEN…AND…”表示表达式值是否不在指定的范围内。
例如:SELECT * FROM user WHERE age BETWEEN 10 AND 30,用于查询出user表中age值介于10~30间的数据记录。
(2)sql查取值的范围扩展阅读:
SQL中WHERE子句其它运算符:
1、比较运算符
>、>=、=、<、<=、<>
2、列表运算符
IN (项1,项2……)
NOT IN (项1,项2……)
3、模式匹配符
LIKE、NOT LIKE
4、空值判断符
IS NULL、IS NOT NULL
5、逻辑运算符
NOT、AND、OR
Ⅲ SQL语句怎样查询一个范围
SQL方法完成数值区间查询
要求:根据奖金等级表的数值区间,返回奖金对应的等级。
1、链接外部数据:数据--现有链接--浏览更多,在路径中选择数据Excel文件和目标工作表,建立数据链接。
详细步骤参考前面所发的SQL相关文章。
2、编写sql语句。
2.1、使用switch函数,SQL语句为:
select 姓名,奖金,switch(奖金<200,"D级",奖金<300,"C级",奖金<500,"B级",奖金>=500,"A级") as 奖金等级 from [奖金$a1:b11]
switch函数直接判断数值,若数值小于200,返回D级;数值小于300返回C级;数值小于500,返回B级;余下的数值条件要变化为>=500返回A级而不是<=700。
2.2、使用iif函数,SQL语句为:
select 姓名,奖金,iif(奖金<200,"D级",iif(奖金<300,"C级",iif(奖金<500,"B级","A级"))) as 奖金等级 from [奖金$a1:b11]
其基本思路和switch函数相同,类似工作表函数if的嵌套。
2.3、使用betweent...and,SQ语句为:
select a.姓名,a.奖金,b.等级 from [奖金$a1:b11] a,[奖金等级$] b where a.奖金 between b.最小值 and b.最大值
以戴苏明同学为例子,在SQL代码运行的时候,将戴苏明同学的奖金一一和奖金等级表中的数值进行对比,符合区间的就返回区间等级。其他同学亦然。
但是,当奖金超出最大值700的时候就会取不到该条数据。
如刘平的奖金701并不在betweent...and的区间内,返回的结果中没有刘平的数据。
2.4、使用Where比较大小,sql语句为:
select a.姓名,a.奖金,b.等级 from [奖金$a1:b11] a,[奖金等级$] b where a.奖金 >=b.最小值 and a.奖金<=b.最大值
此方法原理和betweent...and一样,当奖金超过最大值700时,数据将有遗漏(刘平)。
当奖金的最大值为700的时候,以上四种方法都得出同样的结果。
当奖金最大值超过700的时候,3、4两个方法将遗漏奖金大于700的数据。
因此,可在设计奖金等级表的时候,可以将最大值700改为一个比较大的数值,使奖金再高也不会超过,则四种方位皆可。
如更改奖金等级表的最大值700为70000,这么大的一个范围,则四种方法都适用。
Ⅳ 如何使用SQL语句进行范围的查询
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
有一个表table的一个fields有这样的数据S-1-12S-1-10S-1-50S-10-52S-17-85S-10-A我需要查出以S-1-开头的所有数据(不用LKIE),并且输入一个范围,格式是这样的:第一个输入:S-1-,第二个输入S-1-z就能查出S-1-12S-1-10S-1-50这三个数,我使用select * from table where fields >= 's-1-' and fields <= 's-s-z',为什么结果却会把所有的都显示出来?
解析:
你可以使用substring函数 在mysql ,sql server等数据库系统中都有
比如你这个可以这么写
select * from table where substring(fields,0,4)='S-1-';
函数的参数有3个 字符串,要截取的开始字节,结束字节【如果省略则表示从开始字节一直到字符串末尾】
Ⅳ SQL Server 里的int型取值范围是多少
SQL Server 里int型的数值默认长度为4,即4个字节32位,数据范围为从-2^31 (-2,147,483,648) 到 2^31 - 1(2,147,483,647) 的整型数据(所有数字)。int 的 SQL-92 同义字为 integer。
在支持整数值的地方支持 int 数据类型。但是,int在某些特殊的情况不能使用,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在 SQL Server 中,int 数据类型是主要的整数数据类型。
(5)sql查取值的范围扩展阅读:
使用 +、-、*、/ 或 % 等算术运算符将 int、smallint、tinyint 或 bigint 常量值隐式或显式转换为float、real、decimal 或 numeric 数据类型时,SQL Server 计算数据类型和表达式结果的精度时应用的规则有所不同,这取决于查询是否是自动参数化的。
因此,查询中的类似表达式有时可能会生成不同的结果。 如果查询不是自动参数化的,则将常量值转换为指定的数据类型之前,首先将其转换为 numeric,该数据类型的精度很大足以保存常量的值。例如,常量值 1 转换为 numeric (1, 0),常量值 250 转换为 numeric (3, 0)。
Ⅵ SQL如何实现按数据范围查询
SQL里面 像这种字符串存储的数字 可以直接比较大小
select * from table where CPLSH>='000100' and CPLSH<='000300'
多个范围的话就用or,比如
select * from table where (CPLSH>='000100' and CPLSH<='000300') or (CPLSH>='000305' and CPLSH<='000400')
有几个范围加几个范围