Maison > base de données > tutoriel mysql > Pourquoi MySQL ignore-t-il les espaces de fin dans les champs uniques ?

Pourquoi MySQL ignore-t-il les espaces de fin dans les champs uniques ?

Mary-Kate Olsen
Libérer: 2024-10-31 21:12:29
original
391 Les gens l'ont consulté

Why Is MySQL Ignoring Trailing Spaces in Unique Fields?

Base de données MySQL ignorant les espaces de fin d'un champ unique

Lors de la création d'une base de données avec un champ unique dans MySQL, on s'attend à ce que les valeurs contenant un début ou une fin les espaces doivent être traités comme distincts. Cependant, il a été observé que les espaces de fin sont supprimés lors de l'insertion, ce qui entraîne des erreurs de valeur en double lors de la tentative d'insertion de mots avec des espaces de fin variables.

Le problème sous-jacent réside dans le comportement de comparaison de chaînes par défaut de MySQL, qui ignore les espaces de fin. Par conséquent, l'index UNIQUE utilise une comparaison de chaînes standard, ce qui l'amène à ignorer les espaces de fin et à rejeter les insertions basées sur l'égalité des caractères.

Pour résoudre ce problème, une approche consiste à stocker les valeurs sous forme VARBINARY, ce qui préserve les espaces et permet la création d'index uniques qui respectent les espaces de fin. Bien que cela permette de stocker des valeurs avec des espaces variables, il est important de noter que le tri selon ces valeurs peut ne pas donner les résultats escomptés.

Une solution alternative consiste à utiliser les classements NO PAD de MySQL, qui ont été introduits dans MySQL 8.0. . Ces classements, tels que utf8mb4_0900_ai_ci, gèrent les comparaisons de chaînes sans ignorer les espaces de fin. En créant le champ unique avec un classement NO PAD, vous pouvez vous assurer que les valeurs avec différents espaces de fin sont traitées comme distinctes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal