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

テーブル作成時に :options 文字列に "COLLATE utf8_bin" を追加することで、テーブル作成時にすべての文字列で大文字と小文字を区別することができます。例えば:

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 に答える