ruby-on-rails – 为什么SELECT语句中的’BINARY’?
发布时间:2020-12-17 03:28:41 所属栏目:百科 来源:网络整理
导读:在投票模型中,有一个验证: 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前面有一个BINARY(topic_id
在投票模型中,有一个验证:
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前面有一个BINARY(topic_id)?而且,这是什么意思? 解决方法
这是一种比较字节到字节而不是字符到字符的有效方法
例 假设你有一个名为products record的数据库表,其中有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 ' 逐字节匹配是针对字符到字符进行的 所以第一个会产生有效的结果 和 第二个没有结果 这里的link将进一步帮助您 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |