I have a table called my_table:
| id (number) | some_data ( varchar2(3) ) |
I then query this table using :P_DATA = 'BOB':
SELECT * FROM my_table
where upper(some_data) = upper(CAST(:P_DATA AS VARCHAR(3) ) ;
// SELECT * FROM my_table where upper(some_data) = upper(CAST('BOB' AS VARCHAR(3) )
This works great, but when the bind variable is a number 010 for instance, it returns nothing:
SELECT * FROM my_table
where upper(some_data) = upper(CAST(:P_DATA AS VARCHAR(3) ) ;
// SELECT * FROM my_table where upper(some_data) = upper(CAST(010 AS VARCHAR(3) )
If I put single quotes around the 010 then it returns data:
SELECT * FROM my_table
where upper(some_data) = upper(CAST(:P_DATA AS VARCHAR(3) ) ;
// SELECT * FROM my_table where upper(some_data) = upper(CAST('010' AS VARCHAR(3) )
How can I have this work for all these scenarios, even when the bind variable is a number?