2016-11-09 9 views
1

である場合、私はバージョンnumbers.I 5フィルタレコードカラム型がVARCHAR

に等しい未満だけバージョン番号をフィルタリングし、選択する必要が格納データ型VARCHARを持つテーブルの列を持っている数値に基づいて私は得ることができます

5.0.0 
4.0.2 
2.3.4-ez 
4.2.2-2013-12-11-V1.0 
4.6.0.304 
2.1-update1 
2.3 

入力

5.0.0.330 
Eclair 
5.0.0 
5.0.0.591 
5.0.0.405 
6.0.0.522 
4.0.2 
7.1.0.205 
5.0.0.592 
2.3.4-ez 
4.2.2-2013-12-11-V1.0 
4.6.0.304 
nubernel-2.6.35_v0.0.1 
2.1-update1 
2.3 

出力varcharの列の最初の文字を変換して5未満のすべてのバージョン。結果セットに5.0.0バージョンを含める方法を私は把握できません。

select distinct os_ver,substring(os_ver,1,1) 
from 
    dbo.mytable 
where 
    os_ver like '[0-9]%' and cast (substring(os_ver,1,1) as int) < 5 

これは私のバージョン5.0.0

4.0.2 
2.3.4-ez 
4.2.2-2013-12-11-V1.0 
4.6.0.304 
2.1-update1 
2.3 

答えて

1
Select * 
From dbo.mytable 
Where os_ver<='5.0.0' 

戻り

os_ver 
5.0.0 
4.0.2 
2.3.4-ez 
4.2.2-2013-12-11-V1.0 
4.6.0.304 
2.1-update1 
2.3 
+0

パーフェクトおかげで、も動作します。 –

+0

@inquisitive_mind喜んで助けてください。私はあなたがちょうどそれを考えすぎたと思う –

+0

はい、確かに私はそれを考えすぎた。時には解決策は本当にシンプルです。もう一度ありがとうございます。 –

0

以外のすべてのバージョン5未満、この条件を試してみてくださいを与えます。私はデータでバージョン5.0を使用している場合

select * from (
select '5.0.0.330' as a union 
select 'Eclair' union 
select '5.0.0' union 
select '5.0.0.591' union 
select '5.0.0.405' union 
select '6.0.0.522' union 
select '4.0.2' union 
select '7.1.0.205' union 
select '5.0.0.592' union 
select '2.3.4-ez' union 
select '4.2.2-2013-12-11-V1.0' union 
select '4.6.0.304' union 
select 'nubernel-2.6.35_v0.0.1' union 
select '2.1-update1' union 
select '2.3') b 
where a <= '5.0.0' and ISNUMERIC(SUBSTRING(a, 1, 1)) = 1