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

Come fare in modo che MySQL gestisca le stringhe come fa SQLite, per quanto riguarda Unicode e regole di confronto?

MySQL vuole convertire le stringhe quando si esegue INSERT e SELECT . La conversione è tra ciò che dichiari il cliente avere e cosa è la colonna è dichiarato in fase di archiviazione.

L'unico modo per evitarlo è con VARBINARY e BLOB invece di VARCHAR e TEXT .

L'uso di COLLATION utf8mb4_bin non evita la conversione in/da CHARACTER SET utf8mb4; dice semplicemente che WHERE e ORDER BY dovrebbe confrontare i bit invece di occuparsi degli accenti e della piegatura delle maiuscole.

Tieni presente che CHARACTER SET utf8mb4 è un modo per codificare il testo; COLLATION utf8mb4_* è regole per confrontare i testi in quella codifica. _bin è ingenuo.

UNIQUE implica il confronto per l'uguaglianza, quindi COLLATION . Nella maggior parte delle regole di confronto utf8mb4, il 3 (senza spazi) risulterà uguale. utf8mb4_bin tratterà i 3 come diversi. utf8mb4_hungarian_ci tratta uno=Uno>one.

Gli spazi finali sono controllati dal tipo di dati della colonna (VARCHAR o altro). L'ultima versione ha anche un'impostazione relativa alla possibilità di considerare gli spazi finali.