Tôi tạo ra bảng như thế trong MySQL:Chuỗi so sánh chính xác trong MySQL truy vấn
DROP TABLE IF EXISTS `barcode`;
CREATE TABLE `barcode` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(40) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
INSERT INTO `barcode` VALUES ('1', 'abc');
INSERT INTO `barcode` VALUES ('2', 'abc ');
Sau đó, tôi truy vấn dữ liệu từ bảng mã vạch:
SELECT * FROM barcode WHERE `code` = 'abc ';
Kết quả là:
+-----+-------+
| id | code |
+-----+-------+
| 1 | abc |
+-----+-------+
| 2 | abc |
+-----+-------+
Nhưng tôi muốn tập kết quả chỉ là 1 bản ghi. Tôi giải quyết sự cố với:
SELECT * FROM barcode WHERE `code` = binary 'abc ';
Kết quả là 1 bản ghi. Nhưng tôi đang sử dụng NHibernate với MySQL để tạo truy vấn từ bảng ánh xạ. Vì vậy, làm thế nào để giải quyết trường hợp này?
Lần tiếp theo, hãy xem câu hỏi của bạn sẽ ra sao (có hộp xem trước bên dưới trường văn bản) và nếu có vẻ lộn xộn, hãy khắc phục sự cố :). Sử dụng một số lượng lớn của nút '{}' trên đầu trang cho mã ..... – Nanne
Bạn có thể cung cấp ánh xạ NHibenate và phương pháp bạn sử dụng để tạo truy vấn không? Tại sao bạn sử dụng native-SQL với NHibernate. Tôi nghĩ, bạn nên sử dụng API tiêu chí hoặc HQL. –
từ tài liệu: ["Tất cả các collations của MySQL đều thuộc loại PADSPACE. Điều này có nghĩa là tất cả các giá trị CHAR và VARCHAR trong MySQL được so sánh không liên quan đến bất kỳ dấu cách nào"] (http://dev.mysql.com/doc/refman/ 5.0/en/char.html) – Kaii