sql - 我怎样才能使这个查询不是 CaSeSeNsITIVe?
问题描述
如何使此查询不区分大小写?
@courses = Course.where('name LIKE ?', "%#{params[:name]}%")
解决方案
一个典型的解决方案是在比较它们之前将两个值都转换为小写:
@courses = Course.where('LOWER(name) LIKE LOWER(?)', "%#{params[:name]}%")
根据您的 RDMBS,LOWER()
可能不可用。
此外,根据您的 RDBMS,可能有更有效的选项可用(因为使用字符串函数基本上会破坏现有索引)。例如,在 MySQL 中,您在相关列上设置了不区分大小写的排序规则,这将使所有字符串比较默认不区分大小写,同时允许使用索引。
推荐阅读
- haskell - 如何在 Haskell 中使用表情符号?
- java - 创建或打开预先存在的项目时出现 Android 应用程序开发错误
- reactjs - React Native Flatlist 删除项目而不滚动到顶部
- php - 查询丢失的结果如果我使用 Php 但如果我在 Mysql 中运行则完整
- python - 如何定位/导入我的带有破折号的 plaid-python python 模块?
- tensorflow - 如何将 tfrecord 拆分为多个 tfrecord?
- excel - 使用粘贴方法获取运行时错误 1004
- python - 连接大量具有相同列和相同索引的熊猫数据框
- botframework - 使用 BotFramework Dispatch 的最佳情况
- mysql - 我应该使用什么方法在 SQL 中存储大量数据?