Use TO_CHAR
with a leading zero in the number format:
SQL Fiddle
Oracle 11g R2 Schema Setup:
CREATE TABLE APPLE_MONTH( CURRENCY, PRICE, PREZZO ) AS
SELECT 'EUR', 0.97, 1 FROM DUAL
UNION ALL SELECT 'USD', 0.87, 1 FROM DUAL
UNION ALL SELECT 'USD', 0, 1 FROM DUAL
UNION ALL SELECT 'EUR', -0.1, 1 FROM DUAL
UNION ALL SELECT 'EUR', 10, 1 FROM DUAL
UNION ALL SELECT 'USD', -12.34, 1 FROM DUAL;
Query 1:
SELECT CASE WHEN TRUNC( price ) = price
THEN currency || ' ' || TRIM( TO_CHAR( abs(price), '9999990' ) )
ELSE currency || ' ' || TRIM( TO_CHAR( abs(price), '9999990d00' ) )
END AS COST
FROM apple_month
WHERE prezzo <= 1
Results:
| COST |
|-----------|
| EUR 0.97 |
| USD 0.87 |
| USD 0 |
| EUR 0.10 |
| EUR 10 |
| USD 12.34 |