2016-06-26 10 views
0

以下の要件を参考にしてください。私は、クエリは、小数点以下の桁数が3以上であるすべてのレコードをフィルタする列がSQL Serverで10進数の後の桁数が3より大きいレコードを検索するには

2.06976 
1.089 
1.04 
1.104 
1.1004 
15.05791506 

のような小数の値を持っていたテーブルは、その結果が

2.06976 
1.1004 
15.05791506 
だろう持っています

私に助けていただければ幸いです。私はエクセルにデータをエクスポートし、永遠に取っているすべての種類のものをやっています。

答えて

0

これは最も効率的ではない可能性がありますが、現在の解決策よりも優れています。

declare @Decimals table 
(
    Value decimal(11,9) 
) 

insert into @Decimals (Value) values (2.06976) 
insert into @Decimals (Value) values (1.089) 
insert into @Decimals (Value) values (1.04) 
insert into @Decimals (Value) values (1.104) 
insert into @Decimals (Value) values (1.1004) 
insert into @Decimals (Value) values (15.05791506) 

select 
    * 
from 
    @Decimals 
where 
    len(cast(CAST(Value - CAST(value as decimal(9,0)) as float) as varchar)) > 5 

WHERE句は次のこと

  1. が0.xxxxxxであなたを残し小数点値から整数を引きます。
  2. フロートに、我々は最初の2つの文字は常に「0になることを知っているので、値の文字列へ
  3. 小切手5を超える長さのために、結果の文字列の長さはそのキャストゼロ
  4. 末尾削除することをキャストします。 '
+0

私はすでにExcel(A) - Int(Column(A))で同じことをしていて、フィルターをかけています。私は135K行のテーブルを見ています –

+1

それをExcelではなくSQLでフィルタリングする方法はありますか? – Mufaka

関連する問題