Why the 'BINARY' in a SELECT statement?
activerecord, ruby-on-rails, ruby-on-rails-3
Solution
It is an efficient way of comparing byte to byte instead of character to character
example
Suppose if your have a database table called `products` record which has `vin_number` (some column name) with record with value of `vin_number` say `123456`
Now If you ran the this
select * from products where vin= '123456'
and
select * from products where vin = '123456 '
Both will result the same result
Notice the space in the second select
But with binary the comparison
select * from products where vin= BINARY '123456'
or
select * from producst where vin = BINARY '123456 '
A byte by byte match is done as against character to character
so the first one would result in `valid` result
and
the second one would no result
Here the link that will further help you on this
Problem
In a `Vote` model, there is a validation: ``` validates_uniqueness_of :topic_id, :scope => [:user_id] ``` It is translated to the following SQL in development log: ``` SELECT 1 AS one FROM `votes` WHERE (`votes`.`topic_id` = BINARY 2 AND `votes`.`user_id` = 1) LIMIT 1 ``` Where there is a `BINARY` in front of 2 (topic_id)? And, what does it mean?