次のようなものを使用できます:
declare @v sql_variant set @v=0.1242311 select SQL_VARIANT_PROPERTY(@v, 'Scale') as Scaleプレ>これは
7を返します .上記のクエリを
floatで動作させようとしました 列ですが、期待どおりに機能させることができませんでした。sql_variantでのみ機能します あなたがここで見ることができる列:https://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 は次のとおりです。