Maison  >  Article  >  base de données  >  Champs uniques MySQL : comment gérer les espaces de fin ?

Champs uniques MySQL : comment gérer les espaces de fin ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 02:40:03468parcourir

  MySQL Unique Fields: How to Handle Trailing Spaces?

Base de données MySQL avec champs uniques : ignorer les espaces de fin

Lorsque vous travaillez avec des bases de données MySQL, vous pouvez rencontrer un problème où les champs uniques ignorent les espaces de fin . Cela peut se produire lorsque vous devez stocker des entrées avec un espacement variable à gauche ou à droite des mots, mais la base de données supprime automatiquement les espaces de fin.

Ce problème provient de la gestion par défaut des chaînes par MySQL, qui ignore les espaces de fin pendant comparaisons. Pour comprendre ce comportement, considérez ce qui suit :

<br>VARCHAR my_field UNIQUE NOT NULL;<br>

Si vous insérez 'apple' et ' apple' (avec un espace à la fin) dans ce champ, la vérification unique échouera car MySQL traite les deux valeurs comme identiques.

Solutions possibles :

  1. Stocker les valeurs en tant que VARBINARY :
    Convertissez l'entrée en VARBINARY pour conserver le modèle d'octet exact, y compris les espaces de fin.

<br>ALTER TABLE my_table MODIFY my_field VARBINARY (255) UNIQUE;<br>

  1. Utiliser les classements NO PAD (MySQL 8.0) :
    MySQL 8.0 et supérieur prend en charge les classements avec NO PAD attribut, qui préserve les espaces de fin dans les comparaisons de chaînes.


CREATE TABLE my_table (
my_field VARCHAR(255) UNIQUE COLLATE utf8mb4_0900_ai_ci
);
< ;/pre>

  1. Classement personnalisé (non recommandé) :
    Vous pouvez créer un classement personnalisé avec l'attribut NO PAD, mais cela n'est pas recommandé car cela peut introduire problèmes de compatibilité.

Conclusion :

En comprenant le comportement par défaut de MySQL et en implémentant les solutions appropriées, vous pouvez vous assurer que vos champs uniques gèrent les espaces de fin comme souhaité.

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!

Déclaration:
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