Sunday, December 30, 2007

utf8_general_ci vs utf8_bin

Od jakiegoś roku głowiłem się nad problemem - dlaczego w dokumentacji MySQL LIKE jest case sensitive a u mnie nie. Problem polegał na tym, że wszystkie pola miałem utf8_bin. Oznacza to mniej więcej tyle, że wyszukiwanie odbywa się wtedy binarnie.

Wyszukiwanie binarne, czy sortowanie binarne nie jest czułe na wielkość znaków. Pole utf8_bin wymusza takie właśnie traktowanie i wszystkie zapytania automatycznie działają na danych jako binarne. Dlatego, jeżeli chcesz mieć wybór używaj pól utf8_general_ci a efekty binarne zawieraj w zapytaniu np. BINARY ORDER BY ... itp.

No comments: