Каков эквивалент varchar (max) в Oracle?
CLOB?
Каков эквивалент varchar (max) в Oracle?
CLOB?
Varchars ограничены 4000 символами в Oracle. Помимо этого, вы должны использовать LONG или CLOB. Предпочитают CLOB. LONG - более старый эквивалент.
LOB против LONG и LONG RAW
LOB отличаются от старых LONG и LONG RAW во многих отношениях.
- Максимальный размер LOB составляет 4 гигабайта против 2 гигабайт для LONG и LONG RAW.
- Вы можете использовать случайные, а также методы последовательного доступа к LOB; вы могут использовать только методы последовательного доступа на LONG и LONG RAW.
- LOB (кроме NCLOB) могут быть атрибутами типа объекта, которые вы определить.
- Таблицы могут иметь несколько столбцов больших объектов, но могут иметь только один LONG или LONG RAW.
Миграция существующих LONG и LONG Рекомендуется использовать оригинальные атрибуты больших объектов Oracle. Oracle планирует прекратить поддержку ДОЛГОСРОЧНОГО И ЛОНГОВОГО СЫРЬЯ в будущем релизы. См. Oracle8 Migration for Дополнительная информация о миграции.
Как я понимаю, тип данных VARCHAR (MAX) является специфическим способом SQL Server 2005 для указания текстового поля, которое может быть небольшим (до 8000 символов в SQL Server) или big (до 2 ГБ в SQL Server). База данных обрабатывает изменения в хранилище за кулисами по мере того, как контент растет от малого диапазона до большого диапазона.
В Oracle нет эквивалента.
У вас либо есть небольшой бит текста в VARCHAR2 - до 32767 байт в pl/sql и до 4000 байт в SQL (т.е. в определении таблицы) - или у вас есть потенциально очень большой бит текста в CLOB (который является специализированным BLOB).
В PL/SQL VARCHAR2 может содержать до 32767 байт. Для SQL ограничение составляет 4000 байт (это может быть меньше 4000 символов, если вы используете многобайтовый набор символов).
AFAIK, эквивалента нет. Наиболее близким к ORACLE является CLOB, который имеет те же ограничения, что и TEXT в SQL Server, в "плохие старые дни".
Подход, который я использовал в прошлом (MS SQL, до Varchar (max)):
Поместите два столбца в таблицу, один маленький Varchar (например, 255) и другой текст. Затем создайте приложение так, чтобы он использовал столбец Varchar для небольших данных, оставив Text null. Если данные больше, чем Varchar, оставьте это значение null и сохраните его в тексте. Таким образом, небольшие данные не занимают собственную страницу на сервере. Компромисс заключается в том, что все приложения, использующие данные, должны соглашаться с этой схемой и иметь логику для ее учета. Но он работает хорошо.
Я предполагаю, что то же самое верно в Oracle, просто замените Varchar2 на Varchar и CLOB for Text. Я не претендую на то, чтобы знать, какой правильный размер для varchar должен быть - зависит от данных, а также зависит от остальных столбцов в таблице.
Oracle 11g Gateway переводит Varchar (Max) в LONG Не очень удобно и вызывают серьезные проблемы для нашей загрузки данных SQL Server в Oracle.
Для получения дополнительной информации см. следующий URL: http://docs.oracle.com/cd/B28359_01/gateways.111/b31049/apa.htm
В Oracle существует эквивалент нет, равный 11g-r2. Если вам это нужно, перейдите на другой DMMS, который поддерживает его.