If I run this query in sqldeveloper it returns a correct result
select * from t3_mail_piece
where '111-000-461' BETWEEN start_merge_code and end_merge_code;
302 Travel_Check American_TAD_Typed_Template 22-APR-13 30-APR-13 555-2424 Scottsdale 1 1350 111-000-461 111-000-465 17 1 One Thousand Three Hundred Fifty and 00/100
You have my compete sympathy. This happens to folks ALL THE TIME. Code runs differently in SQL Developer than it does in APEX -- but for a good reason. They are different.
You should run the code in the APEX > SQL Workshop > SQL Commands window. Then tell us what you see? You will have to enter a value for the bind variable -- don't hardcode the bind variable. It must be the problem.