I Tabelle in MySQL so erstellt:String vergleichen genau in Abfrage MySQL
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 ');
Dann habe ich Daten aus der Tabelle Barcode-Abfrage:
SELECT * FROM barcode WHERE `code` = 'abc ';
Das Ergebnis ist:
+-----+-------+
| id | code |
+-----+-------+
| 1 | abc |
+-----+-------+
| 2 | abc |
+-----+-------+
Aber ich möchte das Ergebnis nur 1 Datensatz einstellen. Ich erarbeite Abhilfe mit:
SELECT * FROM barcode WHERE `code` = binary 'abc ';
Das Ergebnis ist 1 Datensatz. Aber ich benutze NHibernate mit MySQL zum Generieren von Abfragen aus Mappingtabellen. So, wie diesen Fall zu lösen?
Das nächste Mal, schauen Sie sich an, wie Ihre Frage kommt (es gibt eine Vorschau-Box unter Ihrem Textfeld), und wenn es ein Chaos aussieht, beheben Sie es :). Verwenden Sie eine großzügige Menge der "{}' Taste oben für Code ..... – Nanne
Könnten Sie NHibenate Mappings und Methoden, die Sie verwenden, um Abfrage generieren? Warum verwenden Sie Native-SQL mit NHibernate? Ich denke, Sie sollten Criteria API oder HQL verwenden. –
aus der Dokumentation: ["Alle MySQL-Kollatierungen sind vom Typ PADSPACE. Dies bedeutet, dass alle CHAR- und VARCHAR-Werte in MySQL ohne Berücksichtigung nachfolgender Leerzeichen verglichen werden"] (http://dev.mysql.com/doc/refman/ 5.0/de/char.html) – Kaii