根据您的数据库,您可能可以这样做:

-- Oracle

WHERE TRUNC(amount, -decimals) = TRUNC(:user_input, -decimals)

-- MySQL

WHERE TRUNCATE(amount, -decimals) = TRUNCATE(:user_input, -decimals)

decimals我的意思是您要保留的小数点左侧的位数,即

TRUNC(5234.32, -3) = 5000.00

TRUNC(64.58, -1) = 60.00

在 SQL 中发现小数的一种愚蠢方法是:

-- Oracle

LENGTH(TO_CHAR(TRUNC(amount)))

-- MySQL

LENGTH(CAST(TRUNCATE(amount) AS CHAR))

当然,正如布兰科在回答中提到的那样,这可能会很慢