I'm trying to prevent mysql from casting a string to an int in a where clause.
The following query returns the correct row for the order
SELECT delivery_name FROM orders WHERE orders_id = '985225'
The following query also returns the same row as it is casting my string to an int, but I'd like to prevent it from returning the row at all (ie, not cast the string given to an int and effectively say, this cannot accurately be cast to an int so don't).
SELECT delivery_name FROM orders WHERE orders_id = '985225a'
I hope that makes sense, any help would be greatly appreciated!
解决方案
You should be able to avoid this scenario altogether, but if you wanted a workaround you could concat a character to the front of the string, something like:
SELECT delivery_name
FROM orders
WHERE CONCAT('a',orders_id) = CONCAT('a','985225a')