Existe uma maneira de forçar maiúsculas e minúsculas no MySQL / Rails para um único achado?

StackOverflow https://stackoverflow.com/questions/264381

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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top