sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

原文连接:http://www.dovov.com/oraclevarcharmax.html
VARCHAR(MAX) 对于varchar(2) 数据类型会进行数据类型转换为number再进行比较。需要注意是 string 类型数据的长度需要一样。如果长度不同获取的是max值可能不同,
比如string 类型的 “2222” 和 “89” 获取的max是“89” .
需要进行补位成为一样长度的字符串("0089"和“2222”)才能进行正确比较。获取 “2222”.

<div class="list-group-item list-group-item-action flex-column align-items-start">
	      	<p>  Oracle中的Varchars限制为4000个字符。 除此之外,您必须使用LONG或CLOB。 优先使用CLOB。  LONGs是较旧的等价物。 </p>

从这个Oracle文档 :

LOB与LONG和LONG RAW

LOB在许多方面与旧的LONG和LONG RAW数据types不同。

  • 对于LONG和LONG RAW,LOB的最大大小是4千兆字节,而2千兆字节是2千兆字节。
  • 您可以在LOB上使用随机和顺序访问方法; 您只能在LONG和LONG RAW上使用顺序访问方法。
  • LOB(NCLOB除外)可以是您定义的对象types的属性。
  • 表可以有多个LOB列,但只能有一个LONG或LONG RAW列。

Oraclebuild议将现有的LONG和LONG Raw属性迁移到LOB。 Oracle计划在未来的版本中终止对LONG和LONG RAW的支持。 有关迁移的更多信息,请参阅Oracle8迁移。

据我所知,VARCHAR(MAX)数据types是SQL Server 2005指定文本字段的一种特殊方式,可以是小的(SQL Server中最多8000个字符) 大(SQL Server中最多2GB)的文本字段。 随着内容从小范围扩展到大范围,数据库处理后台存储的变化。

在Oracle中没有相应的东西。

您可以在VARCHAR2中使用less量的文本 – 在pl / sql中最多为32767个字节,在SQL中最多为4000个字节(即在表定义中) – 或者在CLOB中可能有很大一部分文本(这是一个专门的BLOB)。

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

AFAIK,没有相同的。 在ORACLE中最接近的就是CLOB,它与TEXT在“糟糕的旧时代”中有相同的限制。

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

在表中放置两列,一个小型的Varchar(例如255)和另一个文本。 然后构build您的应用程序,以便将小数据使用Varchar列,并将Text保留为空。 如果数据大于Varchar,则保留null并将其存储在Text中。 这样,小数据不占用服务器上的自己的页面。 这里的折衷是所有使用数据的应用程序都必须同意这个scheme,并且有逻辑来解释它。 但它运作良好。

我认为在Oracle中也是如此,只是Varchar2代表Varchar,CLOB代表Text。 我不会假装知道varchar的大小应该是多less – 这是数据相关的,也取决于表中其余的列。

Oracle 11g网关将Varchar(Max)转换为LONG不太方便,并且导致我们将SQL Server数据加载到Oracle中时遇到重大问题。

有关更多详细信息,请参阅以下url: – http://docs.oracle.com/cd/B28359_01/gateways.111/b31049/apa.htm

在Oracle中, 没有相当于11g-r2的东西。 如果你需要的话,迁移到另一个支持它的DMMS。

<div class="navigation">
	<div class="alignleft"></div>
	<div class="alignright"></div>
</div>
posted on 2021-04-07 21:48  sunny123456  阅读(1240)  评论(0编辑  收藏  举报