Прежде всего, имейте в виду, что длина вашей базы данных может быть в символах, а не в байтах - вам придется проверить документацию на тип данных. Я собираюсь предположить, что это действительно последний для цели вопроса.
Количество байтов, которое будет использовать ваша строка, полностью зависит от кодировки символов, с которой она будет сохранена. Если это UTF-16, тип строки по умолчанию в Delphi, то он всегда будет 2 байта на символ, исключая суррогаты.
Наиболее вероятной кодировкой, при условии, что база данных использует кодировку Unicode, является UTF-8. Это кодирование переменной длины: для символов может потребоваться от 1 до 4 байтов, в зависимости от символа. В Википедии вы можете увидеть график того, как отображаются диапазоны.
Однако, если вы вообще не меняете схему базы данных, это должно означать одно из трех:
- В настоящее время вы храните все в двоичном виде, а не в текстовом (обычно это не лучший выбор)
- База данных уже хранит Unicode и подсчитанные символы, а не байты (в противном случае у вас возникла бы проблема, особенно в случае букв с акцентом)
- База данных хранится в однобайтовой кодовой странице, такой как Windows-1252, что вообще не позволяет вам хранить данные в Юникоде (что делает его не проблемным, поскольку символы будут храниться так же, как и раньше, хотя вы можете ' т юникод)
Я не знаком с Oracle, но если вы посмотрите на MSSQL, у них есть два разных типа данных: varchar и nvarchar. Varchar считает в байтах, в то время как nvarchar считает в символах, поэтому подходит для Unicode. MySQL, с другой стороны, имеет только varchar, и он всегда считается в символах (по состоянию на 4.1). Поэтому вам следует проверить документацию Oracle и схему базы данных, чтобы получить окончательный ответ на вопрос, является ли это проблемой вообще.