Abbiamo un tavolo con un paio di centinaia di tag. Alcuni di loro hanno caratteri speciali (caratteri spagnoli). E alcuni di questi tag potrebbero contenere le stesse lettere, ma non esattamente la stessa stringa con e senza i caratteri speciali.
Lasciami mostrare un esempio:
select * from tags where name = "olga tañón";
Mi aspetterei di ottenere nel risultato la riga specifica che ha "olga tañón", ma invece MySQL mi sta dando come risultato:
olga tañón
olga tañon
olga tanon
Si noti che sono le stesse lettere, ma alcuni di loro hanno i caratteri speciali (ñ e ó) e altri no. La codifica della tabella è latin 1. Usiamo Rails 3.2 e MySQL 5.x
Ecco un codice di esempio
Tag.where(:name => "olga tañón")
Tag Load (94.6ms) SELECT `tags`.* FROM `tags` WHERE `tags`.`name` = "olga tañón"
=> [#<Tag id: 57502, name: "olga tañón">, #<Tag id: 75642, name: "olga tañon">, #<Tag id: 114622, name: "olga tanon">]
Cosa potremmo fare se vogliamo ottenere la stringa esatta restituita nel risultato SELECT quando eseguo una query con caratteri speciali.
Grazie!
risposte:
3 per risposta № 1Penso che sia necessario specificare le regole di confronto: guarda questo http://code.openark.org/blog/mysql/mysqls-character-sets-and-collations-demystified e questo http://dev.mysql.com/doc/refman/5.6/en/charset-collation-charset.html e questo http://dev.mysql.com/doc/refman/5.6/en/charset-collation-effect.html