CASTing would change the type, precision and/or scale of a value, while ROUND() will preserve them:;WITH A(a) AS (SELECT 2.123456)--;WITH A(A) AS (SELECT 1) -- uncomment these lines to try different data types--;WITH A(A) AS (SELECT PI()) -- uncomment these lines to try different data typesSELECT a, SQL_VARIANT_PROPERTY(a,'BaseType') Type, SQL_VARIANT_PROPERTY(ROUND(a,4),'BaseType') RoundType,SQL_VARIANT_PROPERTY(a,'Precision') Prec, SQL_VARIANT_PROPERTY(ROUND(a,4),'Precision') RoundPrec,SQL_VARIANT_PROPERTY(a,'Scale') Scale, SQL_VARIANT_PROPERTY(ROUND(a,4),'Scale') RoundScaleFROM A
This might not matter for just a single value, but if you do math on it later it should be kept in mind.