2008-11-05 2 views

Répondre

25

Vous pouvez également faire une recherche sensible à la casse sans changer vos propriétés de la colonne.

SELECT * FROM mytable WHERE myfield='Value' 

Cette requête correspond:

  • Valeur
  • valeur
  • VALEUR
  • valeur
  • et ainsi de suite
Alors que

...

SELECT * FROM mytable WHERE BINARY myfield='Value' 

Matches seulement:

  • Valeur
2

Dans la base de données mysql, définissez le type de données de votre texte sur utf_collate_bin. Par exemple:

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

Où 'ensembles' est la table, set_name 'est la colonne de type VARCHAR (64). Vous pouvez également le faire dans PhpMyAdmin.

Tout assemblage binaire fera l'affaire; mais utf8 est préférable.

Si vous vous demandez ce que le _ci à la fin de votre collationner actuelle est, cela signifie « insensible à la casse »: p

4

Vous pouvez faire toutes les chaînes sensibles à la casse lorsque vous créez la table en ajoutant "Triées utf8_bin" au: chaîne d'options lors de la création de la table. Par exemple:

create_table("page_infos", :force => true, :options => "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin") do |t| 
     t.string "title",  :limit => 120 
end 
+0

Comment la migration cherche-t-elle à rendre les colonnes déjà sensibles à la casse? – Ben

Questions connexes