Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle中的varchar(max)的等价物是什么?_Sql_Sql Server_Oracle - Fatal编程技术网

Sql Oracle中的varchar(max)的等价物是什么?

Sql Oracle中的varchar(max)的等价物是什么?,sql,sql-server,oracle,Sql,Sql Server,Oracle,Oracle中的varchar(max)的等价物是什么 CLOB?在Oracle中,VARCHAR限制为4000个字符。除此之外,您必须使用LONG或CLOB。喜欢CLOBs。long是较老的等价物 发件人: LOB与长线和长线原始数据的比较 LOB与较旧的LOG不同 以及在许多方面使用长原始数据类型 LOB的最大大小为4G字节,而长时间为2G字节 而且是生的 您可以在LOB上使用随机和顺序访问方法;你 只能使用顺序访问方法 长生不老 LOB(nCLOB除外)可以是您选择的对象类型的属性 定义

Oracle中的varchar(max)的等价物是什么


CLOB?

在Oracle中,VARCHAR限制为4000个字符。除此之外,您必须使用LONG或CLOB。喜欢CLOBs。long是较老的等价物

发件人:

LOB与长线和长线原始数据的比较

LOB与较旧的LOG不同 以及在许多方面使用长原始数据类型

  • LOB的最大大小为4G字节,而长时间为2G字节 而且是生的
  • 您可以在LOB上使用随机和顺序访问方法;你 只能使用顺序访问方法 长生不老
  • LOB(nCLOB除外)可以是您选择的对象类型的属性 定义
  • 表可以有多个LOB列,但只能有一个LONG或LOB列 长原始列
现有长期和长期资产的迁移 建议使用LOB的原始属性 甲骨文。Oracle计划终止支持 在未来的漫长的生 释放。有关详细信息,请参见Oracle8迁移 更多关于移民的信息


在PL/SQL中,VARCHAR2最多可以有32767个字节。对于SQL,限制为4000字节(如果使用多字节字符集,则可能少于4000个字符)。

据我所知,VARCHAR(MAX)数据类型是一种特定于SQL Server 2005的指定文本字段的方法,可以是小的(在SQL Server中最多8000个字符)或大的(在SQL Server中最多2GB)。当内容从小范围增长到大范围时,数据库处理后台存储的变化

甲骨文中没有类似的语言


您要么在VARCHAR2中有少量文本(pl/sql中最多32767字节,sql中最多4000字节)(即在表定义中),要么在CLOB中有可能有大量文本(这是一个专门的BLOB)。

。在ORACLE中最接近的是CLOB,它与SQL Server在“糟糕的旧时代”中的文本具有相同的限制

我过去使用过的一种方法(MS SQL,在Varchar(max)之前):

在表中放入两列,一列是较小的Varchar(例如255),另一列是文本。然后构建您的应用程序,以便它将Varchar列用于小数据,而将文本保留为空。如果数据大于Varchar,则保留该空值并将其存储在文本中。这样,小数据就不会占用服务器上自己的页面。这里的折衷是,所有使用数据的应用程序都必须同意此方案,并具有解释此方案的逻辑。但效果很好


我认为在Oracle中也是如此,只是将Varchar2替换为Varchar,将CLOB替换为Text。我并不假装知道varchar的正确大小应该是多少——这取决于数据,也取决于表中的其余列。

在Oracle中,在11g-r2之前没有类似的列。
如果需要,请迁移到另一个支持它的DMM。

Oracle 11g网关将Varchar(Max)转换为LONG 这不是很方便,而且会给我们将SQL Server数据加载到Oracle中带来重大问题

有关详细信息,请参阅以下url:-

告诉我varchar(max)的意思,我会给你Oracle的等价物。我怀疑它是CLOB。VARCHAR(MAX)是一个可变长度的字符字段,可以(我认为)2GB。与TEXT(与CLOB相同)不同,VARCHAR函数在其上工作?在甲骨文?啊,可能是同义词。使用CLOB,不要使用CLOBTEXT@Mark--对不起,SQL Server中的文本与Oracle中的CLOB是一样的。long和CLOB是邪恶的。大多数varchar函数都不能与它们一起工作,也不一定要与它们一起工作。是的,但如果您希望Oracle的字符数超过4000个,则没有太多选择。在更高版本中,更多的varchar函数(如substr)可以与CLOB一起工作。当然不是全部,但通常使用MB长度的字符串与使用几十个字符的字符串做不同的事情。通常可以使用DBMS_LOB中的函数来做您想做的事情。考虑到我们现在拥有的硬件种类,我同意4k对于varchar2来说太短了。确切地说,VARCHAR限制为4000字节,不超过4000个字符,但在存储多字节字符数据时可能会更少。请看,VARCHAR(MAX)列的情况并非如此。@Dave--我认为igor的回答是针对Oracle的。您不能像VARCHAR(MAX)那样使用文本执行大多数字符串操作功能,例如查找字符串中的单个字符、模式匹配等。。当您不能使用varchar(max)或nvarchar(max)时,我认为在SQL Server中有两个列的更干净的解决方案是使用“行中的文本”表选项。可以为可存储在数据行中的文本、ntext和图像字符串的长度指定最大限制(从24字节到7000字节)。请参阅sp_表选项的帮助。e、 g.EXEC sp_table选项N'MyTable','text in row','1000'