2009-08-04 18 views
1

こんにちはテーブルの値を開始範囲と終了範囲のように2つのパラメータを渡して選択したい範囲でクエリを選択

どうすれば入手できますか?

例:ここ

sid  sname 

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

私は私のクエリは、使用している場合は

s003 name3 
s004 name4 
s005 name5 

のような結果があなたに

+0

どのデータベースを使用していますか? –

+0

明確にするために、「sid」と「sname」の2つの列があります。また、なぜではなく、sydの名前がであるのですか? – Randell

+0

ya私はSQL Server 2005のみを使用しています – Nagu

答えて

1

ありがとう返すように3と5のような2つの値を渡したいです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)) 

マルク・

はUPDATE:
あなたのルールは、「SID」列は常に1つだけの文字「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 

- あなたは作品のクエリを見つけることができます - しかし、あなたは何をあなたの知っている必要がありますデータは同じように見え、それをどのように照会するのか。

+0

s001、s002、s003のように順番に並んでいれば、s012、s015、s020のようになります。それは私のために働くだろうか? – Nagu

+0

それは異なります。あなたの例では、あなたはS0010を持っています、あなたのコメントにはS012があります。あなたのsid列が常にS00 のように書式設定されている場合、このクエリは機能します。 –

+0

@nagu:うーん、質問するには何らかのパターンや何かが必要です。あなたはそれがどのように見えるかわからない何かを照会することはできません。 –