You said you want the amounts with more than two decimal digits, i.e. the ones with fractions of a penny. The tried-and-true technique involves truncating (rounding down), and then comparing to the original number. Most databases have specialized functions that could be used here, like FLOOR() or ROUND(). Here's a solution that uses just the standard SQL CAST function to do the truncation --
select DollarAmt from MoneyTable where CAST(DollarAmt*100 AS INTEGER) <> DollarAmt*100
If you want the amounts with exact pennies, use an equal condition.
For More Information
- What do you think about this answer? E-mail the edtiors at editor@searchDatabase.com with your feedback.
- The Best SQL Web Links: tips, tutorials, scripts, and more.
- Have an SQL tip to offer your fellow DBAs and developers? The best tips submitted will receive a cool prize. Submit your tip today!
- Ask your technical SQL questions -- or help out your peers by answering them -- in our live discussion forums.
- Ask the Experts yourself: Our SQL, database design, Oracle, SQL Server, DB2, metadata, object-oriented and data warehousing gurus are waiting to answer your toughest questions.
This was first published in March 2002