Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment faire en sorte que MySQL gère les chaînes comme le fait SQLite, en ce qui concerne Unicode et le classement ?

MySQL veut convertir les chaînes lors de l'exécution de INSERT et SELECT . La conversion est entre ce que vous déclarez le client avoir et ce que la colonne est déclaré comme stockant.

La seule façon d'éviter cela est avec VARBINARY et BLOB au lieu de VARCHAR et TEXT .

L'utilisation de COLLATION utf8mb4_bin n'évite pas la conversion vers/depuis CHARACTER SET utf8mb4; il dit simplement que WHERE et ORDER BY devrait comparer les morceaux au lieu de s'occuper des accents et du pliage de la casse.

Gardez à l'esprit que CHARACTER SET utf8mb4 est un moyen d'encoder du texte ; COLLATION utf8mb4_* est des règles pour comparer des textes dans cet encodage. _bin est simple d'esprit.

UNIQUE implique de comparer l'égalité, d'où COLLATION . Dans la plupart des classements utf8mb4, les 3 (sans espaces) seront comparables. utf8mb4_bin traitera les 3 comme différents. utf8mb4_hungarian_ci traite un=Un>öne.

Les espaces de fin sont contrôlés par le type de données de la colonne (VARCHAR ou autre). La dernière version a même un paramètre relatif à la prise en compte des espaces de fin.