Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用活动记录进行区分大小写的数据库搜索_Mysql_Ruby On Rails_Activerecord - Fatal编程技术网

Mysql 使用活动记录进行区分大小写的数据库搜索

Mysql 使用活动记录进行区分大小写的数据库搜索,mysql,ruby-on-rails,activerecord,Mysql,Ruby On Rails,Activerecord,活动记录是否提供了一种生成SQL的方法,强制文本搜索区分大小写? RubyonRails生成器被指示创建字符串类型列,并在mysql数据库中生成一个简单的VARCHAR(255)字段。原来是这样 因此,活动记录搜索,例如: Secret.where(token: 'abcde') 将使用令牌abcde,abcde等匹配记录 在不更改基础数据库列(例如指定utf8\u bin排序规则)的情况下,可以通过显式调整where子句使搜索区分大小写: Secret.where('binary token

活动记录是否提供了一种生成SQL的方法,强制文本搜索区分大小写?

RubyonRails生成器被指示创建字符串类型列,并在
mysql
数据库中生成一个简单的
VARCHAR(255)
字段。原来是这样

因此,活动记录搜索,例如:

Secret.where(token: 'abcde')
将使用令牌
abcde
abcde
等匹配记录

在不更改基础数据库列(例如指定
utf8\u bin
排序规则)的情况下,可以通过显式调整
where
子句使搜索区分大小写:

Secret.where('binary token = ?', 'abcde')
但是,这是特定于数据库的,我想知道Active Record是否有一个习惯用法可以为任何数据库实现同样的功能。例如,类似于where.not的
结构:

Secret.where.binary(token: 'abcde')
这难道不是一个足够普遍的需求吗

简而言之:区分大小写没有
ActiveRecord
习惯用法 搜索


对于大小写不敏感的搜索,您可以尝试使用 . 它仍然可以工作,但是源代码有点改变。所以,把它用在你的脸上 自己承担风险

一般来说,区分大小写是习惯用法的子集。 不同的DBM对字符串(文本)数据类型使用非常不同的默认排序规则,包括默认的大小写敏感度。 对于MySQL

有一个sql操作符
COLLATE
,它在DBMS中非常常见(但似乎仍然不在sql标准中)。 但是
ActiveRecord
源代码仅在模式创建代码中显示它。 无论是
ActiveRecord
,还是
Arel
gems都不在
where
search(sad)中使用
COLLATE

注意:请不要错过问题中的数据库标签(
mysql
etc)。
有许多问题和答案没有标签(或带有
sql
one),除了作者的标签外,这些问题和答案与大多数数据库管理系统都是完全无关的。

Secret.where('binary token LIKE?','%abcde%')
这个怎么样?@Gabbar,这与我自己的版本类似,实际上,您正在编写特定于数据库的SQL。我的问题是关于是否存在活动记录抽象。我不完全了解您的情况,但据我所知,活动记录还与数据库联系,以向ORM对象返回sql查询。默认情况下,活动记录搜索不区分大小写。此外,AR不是关于“区分大小写”,而是关于SQL构造和将结果映射到对象。我想,DB设置或
token
列类型是由
Secret.where(token:'abcde')
生成的SQL查询进行不区分大小写搜索的原因。重复:?我最初故意避免使用
mysql
标记,因为我问题的本质不是DB特定的。我正在寻找一种可以由AR提供的功能,这样就不必担心特定的数据库语法。不管怎样,tag现在补充道,我留下的笔记不仅仅是给你的:我真的花了“很多”的时间在这上面,了解DBMS Q/a与什么有关。提示:DBMS(特别是postgresql:)标记也会触发一些好消息,所以即使成员不了解Rails,也会回答。