次のようなものを使用できます:
declare @v sql_variant set @v=0.1242311 select SQL_VARIANT_PROPERTY(@v, 'Scale') as Scale
プレ>これは
7
を返します .上記のクエリを
float
で動作させようとしました 列ですが、期待どおりに機能させることができませんでした。sql_variant
でのみ機能します あなたがここで見ることができる列:http://sqlfiddle.com/#!6/5c62c/ 2そこで、別の方法を見つけて、この回答 に基づいて構築しました 、これを手に入れました:
SELECT value, LEN( CAST( CAST( REVERSE( CONVERT(VARCHAR(50), value, 128) ) AS float ) AS bigint ) ) as Decimals FROM Numbers
プレ>これをテストするための SQL Fiddle は次のとおりです。 23d4f/29
そのちょっとした癖を説明するために、float 値に小数部分がない場合を処理する修正版を次に示します。
SELECT value, Decimals = CASE Charindex('.', value) WHEN 0 THEN 0 ELSE Len ( Cast( Cast( Reverse(CONVERT(VARCHAR(50), value, 128)) AS FLOAT ) AS BIGINT ) ) END FROM numbers
プレ>付属の SQL Fiddle は次のとおりです。