Jeg er bekymret over, at der bliver placeret ekstra pladser i VARCHAR2-felterne og med sammenligningsproblemer. Jeg ved, at der er måder at sammenligne dem på ved at trimme eller konvertere dem, men jeg er bange for, at det vil gøre min kode rodet og buggy.
Det er faktisk stik modsat. Brug af CHAR vil tvinge dine strenge til at have en fast længde ved at polstre dem med mellemrum, hvis de er for korte. Så når man sammenligner CHARs med almindelige strenge i den app, der bruger dataene, skal den app tilføje en trim hver gang. Med andre ord er VARCHAR2 det valg, der naturligt fører til renere kode.
Generelt bør du altid brug VARCHAR2, medmindre du har en meget specifik grund til, hvorfor du vil have en CHAR-kolonne.
Hvis du er bekymret for strenge, der har ekstra mellemrum foran eller i enden, så er der et par muligheder, du tænker på:
- Sørg for, at den proces, der udfører indsatserne, trimmer dem, før de indsættes.
- Tilføj en kontrolbegrænsning på kolonnen, der sikrer, at streng =trim(streng).
- Tilføj en trigger på rækkeniveau før indsættelse, der trimmer strengene, efterhånden som de indsættes.
- Sørg for, at du trimmer strengene, hver gang du forespørger i tabellen