select * from kurve.google_keyword_search_trend_daily
where keyword_name = 'a 34' and country_code = 'BR';
를 쳤더니
a 34
뿐만 아니라 à 34
이런 값도 같이 나왔다.
충격적인 이 결과물은
Collation 이라는 개념으로, 바이너리가 다르지만 같은 값으로 간주되어서 그렇다.
일반적인 해법은
select * from kurve.google_keyword_search_trend_daily
where keyword_name = BINARY'a 34' and country_code = 'BR';
으로 쿼리문을 바이너리로 계산하라고 하는 것이다.
하지만 db 설정을 할 권한이 있고, 이 둘을 항상 구별한다면...
ALTER TABLE `kurve`.`google_keyword_search_trend_daily`
CHANGE COLUMN `keyword_name` `keyword_name` VARCHAR(128) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin' NULL DEFAULT NULL ;
처럼 collate에 ci가 없는 것을 선택하면 된다.
ci는 case insensitive 인 것인가...?