加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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将进一步帮助您

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读