在Vote
模型中,有一个验证:
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
的位置?这是什么意思?
答案 0 :(得分:7)
这是一种比较字节到字节而不是字符到字符
的有效方法示例
假设您有一个名为products
记录的数据库表,其中vin_number
(某些列名称)的记录值为vin_number
说{{1 }}
现在如果你运行了这个
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 '
结果
和
第二个无结果
此处link将进一步为您提供帮助