2011-09-30 31 views
5

Làm cách nào tôi có thể thực hiện tìm kiếm utf8 nhạy cảm nhưng không phân biệt chữ hoa chữ thường trong mysql? Utf8_bin phân biệt chữ hoa chữ thường và utf8_general_ci không nhạy cảm.có thể có dấu nhạy cảm và phân biệt chữ hoa chữ thường utf8 trong mysql không?

+0

Không phải hôm nay ... Nhưng, nếu bạn muốn gấp nếp gấp, nhưng độ nhạy cảm với giọng, vui lòng gửi yêu cầu tại http://bugs.mysql.com. –

Trả lời

2

Có vẻ như không phải là một vì case sensitivity is tough to do in Unicode.

Có một collation utf8_general_cs nhưng có vẻ như là thử nghiệm và theo this bug report, không thực hiện những gì được mong đợi khi sử dụng LIKE.

Nếu dữ liệu của bạn chỉ bao gồm các dấu mũ phía tây (ví dụ: umlauts được bao gồm trong ISO-8859-1), bạn có thể đối chiếu hoạt động tìm kiếm của mình thành latin1_german2_ci hoặc tạo cột tìm kiếm riêng biệt. nhạy cảm với giọng theo this page; latin1_general_ci cũng có thể là tốt, tôi không biết và không thể kiểm tra ngay bây giờ).

2

Nếu bạn muốn khác nhau "phê" từ "quán cà phê" Bạn có thể sử dụng:

Select word from table_words WHERE Hex(word) LIKE Hex("café"); 

Bằng cách này nó sẽ trở lại 'phê'.

Nếu không, nếu bạn sử dụng:

Select word from table_words WHERE Hex(word) LIKE Hex("cafe"); 

nó sẽ trở lại quán cà phê. Tôi đang sử dụng collation latin1_german2_ci.

0

Bạn có thể sử dụng "hex" để làm cho tìm kiếm có dấu trọng âm. Sau đó, chỉ cần thêm lcase để làm cho nó không phân biệt chữ hoa chữ thường. Vì vậy, sẽ cung cấp cho:

SELECT name FROM people WHERE HEX(LCASE(name)) = HEX(LCASE("René")) 

Bạn ném tất cả các chỉ mục của bạn ra khỏi cửa sổ như thế. Nếu bạn muốn tránh việc phải làm một bảng quét toàn bộ và bạn có một chỉ mục trên "tên", cũng tìm kiếm những điều tương tự mà không có hex và lcase:

SELECT name FROM people WHERE name = "René" and HEX(LCASE(name)) = HEX(LCASE("René")) 

Bằng cách này, chỉ số về "name" sẽ được sử dụng để tìm ví dụ chỉ các hàng "René" và "Rene" và sau đó so sánh với "hex" chỉ cần được thực hiện trên hai hàng đó thay vì trên bảng đầy đủ.

+0

Nếu bạn muốn gập chữ hoa chữ thường, nhưng độ nhạy âm, vui lòng gửi yêu cầu tại http://bugs.mysql.com. –

Các vấn đề liên quan