Je suis préoccupé par les espaces supplémentaires placés dans les champs VARCHAR2 et par les problèmes de comparaison. Je sais qu'il existe des moyens de les comparer en les coupant ou en les convertissant, mais j'ai peur que cela rende mon code désordonné et bogué.
C'est en fait tout le contraire. L'utilisation de CHAR forcera vos chaînes à avoir une longueur fixe en les remplissant d'espaces si elles sont trop courtes. Ainsi, lors de la comparaison de CHARs avec des chaînes normales dans n'importe quelle application utilisant les données, cette application devrait ajouter une garniture à chaque fois. En d'autres termes, VARCHAR2 est le choix qui conduit naturellement à un code plus propre.
En général, vous devriez toujours utilisez VARCHAR2, sauf si vous avez une raison très précise pour laquelle vous voulez une colonne CHAR.
Si vous vous inquiétez des chaînes qui ont des espaces supplémentaires au début ou à la fin, quelques options vous viennent à l'esprit :
- Assurez-vous que le processus qui effectue les insertions effectue une coupe avant de les insérer.
- Ajouter une contrainte de vérification sur la colonne qui garantit que string =trim(string).
- Ajoutez un déclencheur au niveau de la ligne avant insertion qui ajuste les chaînes au fur et à mesure qu'elles sont insérées.
- Assurez-vous de faire un trim sur les chaînes chaque fois que vous interrogez la table