Что эквивалентно varchar (max) в Oracle? - PullRequest
40 голосов
/ 06 января 2009

Что эквивалентно varchar (max) в Oracle?

CLOB?

Ответы [ 7 ]

32 голосов
/ 06 января 2009

Varchars ограничены 4000 символов в Oracle. Кроме этого, вы должны использовать LONG или CLOB. Предпочитаю CLOB. ДЛИНЫ - более старый эквивалент.

Из этой документации Oracle :

LOBS против LONG и LONG RAW

LOBs отличаются от старых LONG и длинные типы данных RAW во многих отношениях.

  • Максимальный размер большого объекта составляет 4 гигабайта против 2 гигабайт для LONG и ДОЛГОЯ СЫРЬЯ.
  • Вы можете использовать как случайные, так и последовательные методы доступа к LOB; вы можно использовать только методы последовательного доступа на долгой и длинной сырой.
  • LOB (кроме NCLOB) могут быть атрибутами типа объекта, который вы определить.
  • Таблицы могут иметь несколько столбцов больших объектов, но могут иметь только один LONG или Колонка LONG RAW.

Миграция существующих LONG и LONG Необработанные атрибуты для больших объектов рекомендуется Oracle. Oracle планирует прекратить поддержку LONG и LONG RAW в будущем релизы. См. Oracle8 Migration для больше информации о миграции.

10 голосов
/ 07 января 2009

Насколько я понимаю, тип данных VARCHAR (MAX) - это специфический способ SQL Server 2005 для указания текстового поля, которое может быть небольшим (до 8000 символов в SQL Server) или большой (до 2 ГБ в SQL Server). База данных обрабатывает изменения в хранилище за кулисами при увеличении контента от небольшого диапазона к большому диапазону.

В Oracle нет эквивалента.

У вас либо небольшой фрагмент текста в VARCHAR2 - до 32767 байтов в pl / sql и до 4000 байтов в SQL (т.е. в определении таблицы) - либо у вас потенциально очень большой фрагмент текста в CLOB (который является специализированным BLOB).

3 голосов
/ 06 января 2009

В PL / SQL VARCHAR2 может иметь размер до 32767 байт. Для SQL ограничение составляет 4000 байтов (что может быть меньше 4000 символов, если вы используете многобайтовый набор символов).

0 голосов
/ 07 января 2013

Oracle 11g Gateway переводит Varchar (Max) в LONG Не очень удобно и вызывает серьезные проблемы при загрузке данных SQL Server в Oracle.

См. Следующий URL для более подробной информации: - http://docs.oracle.com/cd/B28359_01/gateways.111/b31049/apa.htm

0 голосов
/ 14 января 2011

В Oracle есть нет эквивалента до 11g-r2. Если вам это нужно, перейдите на другую DMMS, которая его поддерживает.

0 голосов
/ 17 сентября 2009

Подход, который я использовал в прошлом (MS SQL, до Varchar (max)):

Поместите в таблицу два столбца: один маленький Varchar (например, 255) и другой текст. Затем создайте свое приложение так, чтобы оно использовало столбец Varchar для небольших данных, оставляя текст пустым. Если данные больше, чем Varchar, оставьте это значение пустым и сохраните его в тексте. Таким образом, небольшие данные не занимают свою собственную страницу на сервере. Компромисс здесь заключается в том, что все приложения, использующие данные, должны согласиться с этой схемой и иметь логику для ее учета. Но это работает хорошо.

Полагаю, то же самое верно и в Oracle, просто подставьте Varchar2 для Varchar и CLOB для Text. Я не претендую на то, чтобы знать, каким должен быть правильный размер varchar - это зависит от данных, а также от остальных столбцов таблицы.

0 голосов
/ 09 января 2009

AFAIK, аналога нет. Наиболее близким к ORACLE является CLOB, который имеет те же ограничения, что и TEXT в SQL Server в «плохие старые времена».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...