Existe uma maneira de forçar maiúsculas e minúsculas no MySQL / Rails para um único achado?
-
06-07-2019 - |
Pergunta
Eu estou fazendo alguma pesquisa de marcas, e alguns usuários como "gato", enquanto outros como "gato" Go figura ...
De qualquer forma, há uma maneira de forçar um achado especial para ser maiúsculas de minúsculas? Tais como:
Tag.find(:some-special-option-here)
Todas as idéias?
Solução
Você também pode fazer uma pesquisa diferencia maiúsculas de minúsculas sem alterar suas propriedades da coluna.
SELECT * FROM mytable WHERE myfield='Value'
Esta consulta corresponde a:
- Valor
- valor
- VALOR
- valor
- e assim por diante
Enquanto ...
SELECT * FROM mytable WHERE BINARY myfield='Value'
Jogos apenas:
- Valor
Outras dicas
Você pode fazer todos os casos cordas sensíveis quando você criar a tabela, adicionando "utf8_bin COLLATE" ao: corda opções ao criar a tabela. Por exemplo:
create_table( "page_infos", :force => true, :options => "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin") do |t|
t.string "title", :limit => 120
end
No banco de dados mysql, defina o tipo de dados do seu texto para utf_collate_bin. Por exemplo:
ALTER TABLE `sets` CHANGE `set_name` `set_name` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
Onde 'conjuntos' é a tabela, 'set_name' é a coluna do tipo VARCHAR (64). Você também pode fazer isso no phpMyAdmin ..
Qualquer agrupamento binário vai fazer o trabalho; mas utf8 é preferível.
Se você estava pensando o que o _ci no final do seu agrupamento atual é, que significa "Caso Insensitive": p