आप कुछ इस तरह इस्तेमाल कर सकते हैं:
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
इसलिए, मैंने इस answer पर एक और तरीका खोजा और निर्माण किया। , मुझे यह मिल गया:
SELECT value,
LEN(
CAST(
CAST(
REVERSE(
CONVERT(VARCHAR(50), value, 128)
) AS float
) AS bigint
)
) as Decimals
FROM Numbers
इसका परीक्षण करने के लिए यहां एक SQL Fiddle है:http://sqlfiddle.com/#!6/ 23डी4एफ/29
उस छोटी सी विचित्रता को ध्यान में रखते हुए, यहां एक संशोधित संस्करण है जो उस मामले को संभालेगा जब फ्लोट मान में कोई दशमलव भाग न हो:
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 है:http://sqlfiddle.com/#!6/10d54/11