Problem solve Get help with specific problems with your technologies, process and projects.

Returning values with more than two digits to the right of the decimal point

How do I write a WHERE clause that will return only values that have more than two digits to the right of the decimal point (ie. 27.543)? The data type is decimal, length 9, precision 13, scale 6. This is a typical situation when you want a dollar figure that is exactly two decimal place to the right of the decimal. I hope this is not too easy.

When inputting a number as a decimal, MS SQL Server pads the end of the number with 0s to equal the number of places declared in the scale. In other words, 27.543 is really 27.543000. To get around this, find the number of digits between the decimal point and the first zero.


 declare @tbl_decimals table( dec_column dec(13, 6) ) insert into @tbl_decimals values(123.1) insert into @tbl_decimals values(1234.12) insert into @tbl_decimals values(12345.123) insert into @tbl_decimals values(1234.1234) select * from @tbl_decimals WHERE len(left(right(dec_column, 6), charindex('0', right(dec_column, 6)) - 1)) > 2 /* The number "6" should be replaced with the number indicated as the scale dec(precision, scale)*/


For More Information

Dig Deeper on Microsoft SQL Server Installation