2011-07-09 33 views
9

Tôi đang cố gắng tìm kiếm kết hợp chính xác của một chuỗi trong mysql. Chuỗi là 'nrew'. Nhưng khi tôi thực hiện các truy vấn dưới đây, tôi vẫn nhận được kết quả:cách tìm kiếm chuỗi chính xác trong mysql

SELECT UserID FROM sys_users WHERE UserID='NREW' 
SELECT UserID FROM sys_users WHERE UserID='NrEw' 

Vui lòng trợ giúp.

Trả lời

19
SELECT UserID FROM sys_users WHERE BINARY UserID='NREW' 
+0

Là một lưu ý bổ sung, nếu bạn khớp với tên tài khoản người dùng duy nhất, đảm bảo bạn cũng sử dụng BINARY nếu không, các tên như aimé.smith và aime.smith được giả định là có cùng giá trị bất chấp sự khác biệt về ký tự đặc biệt. –

8

Các collation mặc định mà MySQL sử dụng để so sánh là trường hợp nhạy cảm. Bạn cần phải chỉ định một trường hợp trùng lặp nhạy cảm hoặc nhị phân. Bạn có thể làm điều này khi tạo cột hoặc trong truy vấn.

Ví dụ:

SELECT UserID FROM sys_users WHERE UserID='NREW' COLLATE latin1_bin 

Các đối chiếu thích hợp phụ thuộc vào bộ ký tự của bạn. Đối với latin1, mặc định, bạn có thể sử dụng latin1_bin. Đối với utf8, utf8_bin.

3

Một phương pháp là sử dụng LIKE BINARY thay vì =:

SELECT UserID FROM sys_users WHERE UserID LIKE BINARY 'nrew'; 
5

Bạn có thể sử dụng từ khoá Binary,

SELECT UserID FROM sys_users WHERE BINARY UserID='nrew' 

tham khảo here

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