단일 찾기를 위해 MySQL / Rails의 케이스 민감도를 강제하는 방법이 있습니까?

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

문제

나는 태그 검색을하고 있고 일부 사용자는 "고양이"를 좋아하고 다른 사용자는 "고양이"를 좋아합니다 ...

어쨌든, 특정한 발견이 사례에 민감하도록 강요 할 수있는 방법이 있습니까? 와 같은:

Tag.find(:some-special-option-here)

어떤 아이디어?

도움이 되었습니까?

해결책

열 속성을 변경하지 않고도 대용어 검색을 수행 할 수도 있습니다.

SELECT * FROM mytable WHERE myfield='Value' 

이 쿼리 일치 :

  • 등등

하는 동안...

SELECT * FROM mytable WHERE BINARY myfield='Value'

일치 만 :

다른 팁

테이블을 만들 때 "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

MySQL 데이터베이스에서 텍스트의 데이터 유형을 UTF_COLLATE_BIN으로 설정하십시오. 예를 들어:

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

여기서 'sets'는 테이블이고 'set_name'은 타입 바르 차 (64)의 열입니다. Phpmyadmin에서도 이것을 할 수 있습니다 ..

모든 바이너리 콜레이트는 작업을 수행합니다. 그러나 UTF8이 바람직하다.

현재 Collate의 끝에있는 _ci가 무엇인지 궁금하다면 "Case Insensitive"를 의미합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top