2012-06-21 3 views
5

В Vote модели есть подтверждение:Почему «BINARY» в инструкции SELECT?

validates_uniqueness_of :topic_id, :scope => [:user_id] 

Он переведен на следующий SQL в журнале развития:

SELECT 1 AS one FROM `votes` WHERE (`votes`.`topic_id` = BINARY 2 AND `votes`.`user_id` = 1) LIMIT 1 

Где находится в передней части 2 (topic_id) а BINARY? И что это значит?

ответ

7

Это эффективный способ сравнения байт в байт вместо персонажа к персонажу

пример

Предположим, если ваш есть таблица базы данных называется products запись, которая имеет vin_number (некоторое имя столбца) с записью со значением vin_number сказать 123456

Теперь Если вы запускали эту

select * from products where vin= '123456' 

и

select * from products where vin = '123456 ' 

И приведет тот же результат

Обратите внимание на пространство во втором выберите

Но с двоичным сравнение

select * from products where vin= BINARY '123456' 

или

select * from producst where vin = BINARY '123456 ' 

Байт по игре байт делается против персонажа к персонажу

поэтому первым можно было бы привести в valid результате

и

второй бы нет результата

Здесь link, которые также помогут вам в этом

+0

Ooops, broken link – Bustikiller

Смежные вопросы