ho creato tabella come quella in MySQL:String confrontare esattamente nella query 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 ');
Poi ho interrogare i dati dalla tabella di codici a barre:
SELECT * FROM barcode WHERE `code` = 'abc ';
Il risultato è:
+-----+-------+
| id | code |
+-----+-------+
| 1 | abc |
+-----+-------+
| 2 | abc |
+-----+-------+
Ma voglio che il set di risultati sia solo 1 record. Ho risolto il problema con:
SELECT * FROM barcode WHERE `code` = binary 'abc ';
Il risultato è 1 record. Ma sto usando NHibernate con MySQL per generare query dalla tabella di mapping. In modo che come risolvere questo caso?
La prossima volta, guarda come verrà fuori la tua domanda (c'è una finestra di anteprima sotto il tuo campo di testo), e se sembra un disastro, risolvilo :). Utilizza una quantità generosa del tasto '{}' in alto per il codice ..... – Nanne
Puoi fornire i mapping NHibenate e i metodi che utilizzi per generare una query? Perché usi l'SQL nativo con NHibernate. Penso che dovresti usare Criteria API o HQL. –
dai documenti: ["Tutte le regole di confronto MySQL sono di tipo PADSPACE. Ciò significa che tutti i valori CHAR e VARCHAR in MySQL vengono confrontati indipendentemente dagli spazi finali"] (http://dev.mysql.com/doc/refman/ 5.0/en/char.html) – Kaii