按范围选择查询

时间:2009-08-04 08:37:58

标签: sql sql-server sql-server-2005 tsql

您好我想通过传递两个参数(如开始和结束范围

)来从表中选择值

我怎么能得到它?

前:

sid     sname

s001    name1 
s002    name2
s003    name3 
s004    name4
s005    name5 
s006    name6
s007    name7 
s008    name8
s009    name9 
s0010   name10

这里我想传递两个值,如3和5,以便我的查询将返回像

这样的结果
s003  name3
s004  name4
s005  name5

谢谢

1 个答案:

答案 0 :(得分:1)

如果您正在使用SQL Server,并假设您的列都是VARCHAR,并且您的“sid”列始终是“s00”+数字,那么您可以执行以下操作:

declare @value1 int
declare @value2 int

set @value1 = 3
set @value2 = 5

select
  sid, sname
from
  (your table name)
where
  sid between 's00' + CAST(value1 AS VARCHAR(3)) AND
              's00' + CAST(value2 as VARCHAR(3))

马克

更新:
如果您的规则是“SID”列始终只是一个字母“s”(或其他),然后任意数量的数字(例如“s1”,“s012”,“s292929”),那么此查询将执行诀窍:

declare @value1 int
declare @value2 int

set @value1 = 12
set @value2 = 15

select
  sid, sname
from
  tbl2
where
  CAST(SUBSTRING(sid, 2, 999) AS INT) BETWEEN @value1 and @value2

无论您的模式和规则是什么 - 您都可以找到有效的查询 - 但您需要知道数据的外观以及如何查询数据。