Oracle
 sql >> база данни >  >> RDS >> Oracle

Тип данни на Oracle:Трябва ли да използвам VARCHAR2 или CHAR

Притеснявам се относно поставянето на допълнителни интервали в полетата VARCHAR2 и проблемите при сравнението. Знам, че има начини да ги сравнявам чрез изрязване или преобразуване, но се страхувам, че това ще направи кода ми объркан и бъгав.

Всъщност е точно обратното. Използването на CHAR ще принуди вашите низове да бъдат с фиксирана дължина, като ги запълни с интервали, ако са твърде къси. Така че, когато сравнявате CHAR с обикновени низове във всяко приложение, което използва данните, това приложение ще трябва да добавя подрязване всеки път. С други думи, VARCHAR2 е изборът, който естествено води до по-чист код.

По принцип трябва винаги използвайте VARCHAR2, освен ако нямате много конкретна причина, поради която искате колона CHAR.

Ако се притеснявате за низове, които имат допълнителни интервали в предната или крайната част, тогава има няколко опции, които идват на ум:

  • Уверете се, че всеки процес, който извършва вложките, ги подрязва, преди да ги вмъкнете.
  • Добавете ограничение за проверка на колоната, което гарантира, че string =trim(string).
  • Добавете задействане преди вмъкване на ниво ред, което извършва подрязване на низовете, когато се вмъкнат.
  • Уверете се, че правите подрязване на низовете всеки път, когато правите заявка към таблицата


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membership.ValidateUser винаги връща false след надстройка до VS 2010 / .NET 4.0

  2. Oracle Database 21c

  3. WIDTH_BUCKET() Функция в Oracle

  4. Различни стойности се отчитат в една и съща колона

  5. Как да използвате аналитични функции в oracle (над разделяне по ключова дума)