2012-06-21 76 views
5

Vote模型中,有一個驗證:爲什麼SELECT語句中的'BINARY'?

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

這是比較逐字節而不是角色而

例如

假設,如果你有一個數據庫表中調用它有vin_number一些列名)與唱片products記錄的有效途徑與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,斷開的鏈接 – Bustikiller

相關問題