sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo hacer que MySQL maneje cadenas como lo hace SQLite, con respecto a Unicode y la intercalación?

MySQL quiere convertir cadenas al hacer INSERT y SELECT . La conversión es entre lo que declara el cliente tener y lo que la columna se declara que está almacenando.

La única forma de evitarlo es con VARBINARY y BLOB en lugar de VARCHAR y TEXT .

El uso de COLLATION utf8mb4_bin no evita la conversión a/desde CHARACTER SET utf8mb4; simplemente dice que WHERE y ORDER BY debería comparar los bits en lugar de lidiar con los acentos y el plegado de casos.

Tenga en cuenta que CHARACTER SET utf8mb4 es una forma de codificar texto; COLLATION utf8mb4_* son reglas para comparar textos en esa codificación. _bin es ingenuo.

UNIQUE implica comparar la igualdad, por lo tanto COLLATION . En la mayoría de las intercalaciones utf8mb4, el 3 (sin espacios) se comparará igual. utf8mb4_bin tratará a los 3 como diferentes. utf8mb4_hungarian_ci trata a uno=Uno>öuno.

Los espacios finales están controlados por el tipo de datos de la columna (VARCHAR u otro). La última versión incluso tiene una configuración relacionada con si se deben considerar los espacios finales.