sql语句判断数据是否在两个字段范围内

表A中有三个字段idstartidendidstartid中存储起始值如01020等endid中存储结束值如102030等所有表数据就是idstartidendid101... 表A中有三个字段 id startid endid
startid中存储起始值 如 0 10 20 等
endid中存储结束值 如10 20 30等
所有表数据就是
id startid endid
1 0 10
2 30 40
3 100 350

诸如如上结构
我得到一个值 比方说这个值是105 且105在id为3的范围内
我向用一条语句判断105在这个表中哪个id的范围内 应该怎么写啊
谢谢
如果startid 和 endid存储的不是number型 而是varchar2型
例如
id startid endid
1 10.20.30 10.20.50
2 20.30.0 20.30.16
3 30.20.17 30.20.33
类似这种数据呢
我获得 20.30.13该如何获取呢
展开
 我来答
Baby_原來
2015-11-19 · TA获得超过3402个赞
知道大有可为答主
回答量:1535
采纳率:94%
帮助的人:491万
展开全部

sql between and 用法

BETWEEN

指定测试范围。

语法

test_expression [ NOT ] BETWEEN begin_expression AND end_expression

参数

    test_expression

    是用来在由 begin_expression 和 end_expression 定义的范围内进行测试的表达式。test_expression 必须与 begin_expression 和 end_expression 具有相同的数据类型。


NOT

指定谓词的结果被取反。

    begin_expression

    是任何有效的 Microsoft® SQL Server™ 表达式。begin_expression 必须与 test_expression 和 end_expression 具有相同的数据类型。

    

    end_expression

    是任何有效的 SQL Server 表达式。end_expression 必须与 test_expression 和 begin_expression 一样具有相同的数据类型。


AND

作为一个占位符,表示 test_expression 应该处于由 begin_expression 和 end_expression 指定的范围内。


结果类型

Boolean


结果值

    如果 test_expression 的值大于或等于 begin_expression 的值并且小于或等于 end_expression 的值,则 BETWEEN 返回 TRUE。

    如果 test_expression 的值小于 begin_expression 的值或者大于 end_expression 的值,则 NOT BETWEEN 返回 TRUE。


注释

若要指定排除范围,请使用大于 (>) 和小于 (<) 运算符。如果任何 BETWEEN 或 NOT BETWEEN 谓词的输入为 NULL,则结果是 UNKNOWN。


示例:

--查询id在10到20之间的数据
SELECT * FROMM tbname WHERE id BETWEEN 10 AND 20

看个电影先
2015-11-11 · 超过13用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:16.9万
展开全部
假设你说的数据这个字段名为A,两个字段范围对应的两个字段名为B、C
SELECT *
FROM TableName
WHERE A BETWEEN B AND C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
feixianxxx
2010-07-01 · TA获得超过2202个赞
知道大有可为答主
回答量:1273
采纳率:100%
帮助的人:1747万
展开全部
--如果是decimal类型
select ID
from a
where @value between startid and endid
go
--如果是varchar类型
create table test
(
id int identity(1,1),
startid varchar(30),
endid varchar(30)
)
insert test select
'10.20.30', '10.20.50' union all select
'20.30.0' , '20.30.16' union all select
'30.20.17', '30.20.33'
go
declare @str varchar(30)
set @str='20.30.13'
select *
from test
where PARSENAME(@str+'.0',1) between PARSENAME(startid+'.0',1) and PARSENAME(endid+'.0',1)
and PARSENAME(@str+'.0',2) between PARSENAME(startid+'.0',2) and PARSENAME(endid+'.0',2)
and PARSENAME(@str+'.0',3) between PARSENAME(startid+'.0',3) and PARSENAME(endid+'.0',3)
and PARSENAME(@str+'.0',4) between PARSENAME(startid+'.0',4) and PARSENAME(endid+'.0',4)
/*
id startid endid
----------- ------------------------------ ------------------------------
2 20.30.0 20.30.16*/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wannalcxl
2010-07-01 · TA获得超过259个赞
知道小有建树答主
回答量:640
采纳率:0%
帮助的人:619万
展开全部
sql="select * from 表A where startid<="& t &" and endid>="& t &"
其中t为参数,如t=105
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式