Exists requires a subquery, which you have, but a blank will be considered a value so exists will always be true on blanks. Think of 'exists' as 'there is a row matching the criteria'. To map blanks/nulls to user friendly values, you will need to use CASE or COALESCE.
2 options:
SELECT
CASE
WHEN id = '' THEN 'n/a'
ELSE id
END
FROM mytable;
or
SELECT
COALESCE(NULLIF(id,''), 'n/a') AS 'id'
FROM mytable;
**edits... brain farts on code blocks.