Притеснявам се относно поставянето на допълнителни интервали в полетата VARCHAR2 и проблемите при сравнението. Знам, че има начини да ги сравнявам чрез изрязване или преобразуване, но се страхувам, че това ще направи кода ми объркан и бъгав.
Всъщност е точно обратното. Използването на CHAR ще принуди вашите низове да бъдат с фиксирана дължина, като ги запълни с интервали, ако са твърде къси. Така че, когато сравнявате CHAR с обикновени низове във всяко приложение, което използва данните, това приложение ще трябва да добавя подрязване всеки път. С други думи, VARCHAR2 е изборът, който естествено води до по-чист код.
По принцип трябва винаги използвайте VARCHAR2, освен ако нямате много конкретна причина, поради която искате колона CHAR.
Ако се притеснявате за низове, които имат допълнителни интервали в предната или крайната част, тогава има няколко опции, които идват на ум:
- Уверете се, че всеки процес, който извършва вложките, ги подрязва, преди да ги вмъкнете.
- Добавете ограничение за проверка на колоната, което гарантира, че string =trim(string).
- Добавете задействане преди вмъкване на ниво ред, което извършва подрязване на низовете, когато се вмъкнат.
- Уверете се, че правите подрязване на низовете всеки път, когато правите заявка към таблицата