단일 찾기를 위해 MySQL / Rails의 케이스 민감도를 강제하는 방법이 있습니까?
-
06-07-2019 - |
문제
나는 태그 검색을하고 있고 일부 사용자는 "고양이"를 좋아하고 다른 사용자는 "고양이"를 좋아합니다 ...
어쨌든, 특정한 발견이 사례에 민감하도록 강요 할 수있는 방법이 있습니까? 와 같은:
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"를 의미합니다.
제휴하지 않습니다 StackOverflow