8

我正在搜索标签,一些用户喜欢“猫”,而另一些用户喜欢“猫”去图...

无论如何,有没有办法强制特定的发现区分大小写?如:

Tag.find(:some-special-option-here)

有任何想法吗?

4

3 回答 3

25

您还可以在不更改列属性的情况下进行区分大小写的搜索。

SELECT * FROM mytable WHERE myfield='Value' 

此查询匹配:

  • 价值
  • 价值
  • 价值
  • 价值
  • 等等

尽管...

SELECT * FROM mytable WHERE BINARY myfield='Value'

仅匹配:

  • 价值
于 2008-11-05T09:02:49.753 回答
4

您可以通过在创建表时将“COLLATE utf8_bin”添加到 :options 字符串来使所有字符串在创建表时区分大小写。例如:

create_table( "page_infos", :force => true, :options => "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin") do |t|
      t.string   "title",       :limit => 120
end
于 2009-01-19T18:05:10.537 回答
2

在 mysql 数据库中,将文本的数据类型设置为 utf_collat​​e_bin。例如:

ALTER TABLE `sets` CHANGE `set_name` `set_name` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL

其中“sets”是表,“set_name”是 VARCHAR(64) 类型的列。您也可以在 PhpMyAdmin 中执行此操作..

任何二进制整理都可以完成这项工作;但 utf8 更可取。

如果您想知道当前整理末尾的 _ci 是什么,它的意思是“不区分大小写”:p

于 2008-11-05T05:14:28.870 回答