sql >> Database >  >> RDS >> Oracle

Oracle-gegevenstype:moet ik VARCHAR2 of CHAR gebruiken?

Ik maak me zorgen over extra spaties die in de VARCHAR2-velden worden geplaatst en over vergelijkingsproblemen. Ik weet dat er manieren zijn om ze te vergelijken door ze te trimmen of te converteren, maar ik ben bang dat mijn code er rommelig en rommelig door wordt.

Het is eigenlijk precies het tegenovergestelde. Als u CHAR gebruikt, worden uw tekenreeksen gedwongen een vaste lengte te hebben door ze op te vullen met spaties als ze te kort zijn. Dus bij het vergelijken van CHAR's met gewone tekenreeksen in welke app dan ook die de gegevens gebruikt, zou die app elke keer een bijsnijding moeten toevoegen. Met andere woorden, VARCHAR2 is de keuze die natuurlijk leidt tot schonere code.

Over het algemeen moet u altijd gebruik VARCHAR2, tenzij je een heel specifieke reden hebt waarom je een CHAR-kolom wilt.

Als je je zorgen maakt over strings met extra spaties aan de voorkant of het einde, dan zijn er een paar opties die in je opkomen:

  • Zorg ervoor dat de inserts, ongeacht het proces, ze bijsnijden voordat ze worden ingevoegd.
  • Voeg een controlebeperking toe aan de kolom die ervoor zorgt dat string =trim(string).
  • Voeg een trigger op rijniveau vóór het invoegen toe die de snaren bijsnijdt zodra ze worden ingevoegd.
  • Zorg ervoor dat u de snaren bijsnijdt wanneer u de tabel opvraagt


  1. Importeer meerdere CSV-bestanden naar SQL Server vanuit een map

  2. Voorkomen van aangrenzende/overlappende items met EXCLUDE in PostgreSQL

  3. Herstel uw WordPress-database met WP-CLI

  4. Prestatieverrassingen en veronderstellingen:GROUP BY vs. DISTINCT