Mysql
 sql >> Database >  >> RDS >> Mysql

Ottengo doppi risultati dalla query mysql quando utilizzo caratteri internazionali, ad esempio Å/Ä=A &Ö=O,

Il tuo "problema" è il utf8_unicode_ci collazione. Quel confronto fa "espansioni di caratteri", il che significa che le dieresi e i loro caratteri di base sono trattati come gli stessi anche in un = confronto :

A = Ä
O = Ö
...

Il secondo esempio in questa pagina di manuale di MySQL spiega il problema:9.1.7.8. Esempi dell'effetto di confronto

Quello che dovresti fare è passare a un confronto che distingua tra dieresi e carattere di base (ad es. utf8_general_ci o utf8_general_bin ) o passare a un confronto diverso solo durante il confronto:

select * from users where username like 'Björn' COLLATE utf8_general_ci;

questo è ovviamente più lento, perché la conversione delle regole di confronto deve essere eseguita per ogni record durante la query.