Oracle-DB: надежный способ рассчитать длину поля в CHAR из all_tab_columns.data_length?
Я написал очень простой слой доступа к базе данных, который отображает объекты C# в таблицы базы данных и обратно. Он использует информацию в all_tab_columns для некоторой проверки входных данных (в основном, проверки длины). Он работает нормально на ISO-кодированных базах данных, но на UTF-8 дает неправильные результаты. Я пытался (data_length / LENGTHB('ä')), который иногда, кажется, работает, а иногда нет. Я знаю, что это грязный взлом, но я еще не нашел образец. Есть ли надежный способ рассчитать длину CHAR поля VARCHAR2 из data_length?
0 ответов
Я нашел ответ самостоятельно. ALL_TAB_COLUMNS предоставляет поле CHAR_LENGTH, которое содержит максимальное количество символов в столбце. Пример:
SELECT column_name, char_length FROM all_tab_columns WHERE table_name = 'SOME_TABLE';