sql >> Databáze >  >> RDS >> Oracle

Datatyp Oracle:Mám použít VARCHAR2 nebo CHAR

Mám obavy z umístění dalších mezer do polí VARCHAR2 a problémů s porovnáním. Vím, že existují způsoby, jak je porovnat pomocí jejich oříznutí nebo převodu, ale obávám se, že to způsobí, že můj kód bude chaotický a chybný.

Je to vlastně úplně naopak. Použití CHAR přinutí vaše řetězce, aby měly pevnou délku tím, že je doplníte mezerami, pokud jsou příliš krátké. Takže při porovnávání znaků CHAR s běžnými řetězci v jakékoli aplikaci, která data používá, by tato aplikace musela pokaždé přidat trim. Jinými slovy, VARCHAR2 je volba, která přirozeně vede k čistšímu kódu.

Obecně byste měli vždy použijte VARCHAR2, pokud nemáte velmi konkrétní důvod, proč chcete sloupec CHAR.

Pokud se obáváte řetězců, které mají vpředu nebo na konci navíc mezery, pak vás napadá několik možností:

  • Před vložením se ujistěte, že jakýkoli proces, který provádí vložky, je ořízne.
  • Přidejte do sloupce kontrolní omezení, které zajistí, že string =trim(string).
  • Přidejte spouštěč na úrovni řádku před vložením, který ořízne řetězce při jejich vkládání.
  • Ujistěte se, že při každém dotazu na tabulku provedete oříznutí řetězců


  1. Jak vytvořit tabulku s omezením cizího klíče v SQL Server - SQL Server / TSQL výukový program, část 66

  2. Jak aktualizovat všechny sloupce pomocí INSERT ... ON CONFLICT ...?

  3. Jak zastavit/zabít dotaz v postgresql?

  4. Oracle:načítání velkého souboru xml?