一、Long简介
1、LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB。
2、对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG来存储的。
3、LONG类型主要用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。
4、很多工具,包括SQL*Plus,处理LONG 数据类型都是很困难的。
5、LONG 数据类型的使用中,要受限于磁盘的大小。
能够操作 LONG 的 SQL 语句:
1、Select语句
2、Update语句中的SET语句
3、Insert语句中的VALUES语句
二、一些限制
1、一个表中只能包含一个 LONG 类型的列。
2、不能索引LONG类型列。
3、不能将含有LONG类型列的表作聚簇。
4、不能在SQL*Plus中将LONG类型列的数值插入到另一个表格中,如insert into …select。
5、不能在SQL*Plus中通过查询其他表的方式来创建LONG类型列,如create table as select。
6、不能对LONG类型列加约束条件(NULL、NOT NULL、DEFAULT除外),如:关键字列(PRIMARY KEY)不能是 LONG 数据类型。
7、LONG类型列不能用在Select的以下子句中:where、group by、order by,以及带有distinct的select语句中。
8、LONG类型列不能用于分布查询。
9、PL/SQL过程块的变量不能定义为LONG类型。
10、LONG类型列不能被SQL函数所改变,如:substr、instr。
因为long类型的数值不能用insert into … select的方法插入,故我们要分两步走,先插入其它字段,最后再插入long类型字段,这可以通过过程来实现.下面是一个我做实验实现的例子.
SQL> create table testlong (id number,name varchar2(12),history long);
表已创建。
SQL> create table testlong1 (id number,name varchar2(12),history long);
表已创建。
SQL> insert into testlong values(1, 'dwh', 'work in foshan');
已创建 1 行。
SQL> insert into testlong values(2,'sfg','work in guangzhou');
已创建 1 行。
SQL> select history from testlong;
HISTORY
----------------------------------
work in foshan
work in guangzhou
SQL> insert into testlong1 select * from testlong;
insert into testlong1 select * from testlong
*
第 1 行出现错误:
ORA-00997: 非法使用 LONG 数据类型
三、Hibernate自动建表时什么时候表字段的数据类型是Long
1. 当hbm property的type=string或java.lang.String,此时如果length>4000 char, 则hibernate在建表时会见字段类型定义为Oracle Long
2. 当hbm property的type=text时,则hibernate在建表时会见字段类型定义为Oracle Long
四、开发中注意问题
1. 一个表中不要出现两个字段的数据类型都是Oracle Long类型,否则会报错
2. 尽量不要使用Oracle Long类型
相关推荐
"hibernate映射Oracle中LONG类型" Hibernate 框架映射 Oracle 中的 LONG 类型字段是一种复杂的技术问题。Oracle 中的 LONG 类型字段是一种特殊的数据类型,用于存储可变长字符串,最大长度限制是 2GB。这与 Java ...
Oracle 中的 LONG 数据类型 Oracle 中的 LONG 数据类型是一种特殊的数据类型,用于存储可变长字符串。LONG 数据类型的最大长度限制是 2GB,这使得它非常适合存储超出一定长度的文本。实际上,数据字典中很多对象的...
在Oracle数据库中,LongRaw和Blob都是用于存储大对象(LOB)的数据类型,但它们有各自的特点和适用场景。在某些情况下,可能需要将LongRaw字段转换为Blob字段,这通常是因为Blob提供更好的管理和处理大型二进制数据...
Oracle数据库中,LongRaw和Blob是两种不同的数据类型,它们分别用于存储大对象(LOB)数据。LongRaw类型是Oracle的原始数据类型,用于存储二进制大对象,而Blob类型则是二进制大型对象,更适合存储大量的二进制数据...
1. **数值类型**:int、decimal、long、short等对应Oracle的NUMBER,bool对应PL/SQL的BOOLEAN。 2. **字符串类型**:string对应Oracle的VARCHAR2或CHAR,DateTimeOffset对应TIMESTAMP WITH TIME ZONE。 3. **日期/...
1. **Number**: 这种无精度和标度定义的"Number"可以存储任意大小的数字,理论上可以看作是Java中的任意整数类型(int、long、short、byte)。但需要注意,Oracle的"Number"没有指定精度时,其大小和Java的整型有所...
1. Long类型: Long数据类型用于存储大文本数据,它最多可以存储约2GB的数据。然而,Long类型在处理大量数据时可能效率较低,且不支持索引。在Oracle 10g及更高版本中,建议使用Clob类型代替Long,因为Clob提供了更...
在Oracle数据库中,LONG类型是一种用于存储大文本数据的字段类型,它可以容纳超过4000个字节的数据。在处理这种类型的数据时,有一些特定的方法和注意事项。 首先,我们来看一下如何在Oracle中创建一个包含LONG类型...
随着技术发展,Long类型正逐渐被BLOB、CLOB和NCLOB等大对象数据类型取代。 6. **Raw(n)**: 用于存储固定长度的二进制数据,最大长度为2000字节,适用于小型图形或格式化文本文件。与Long一样,它也在逐渐被淘汰,被...
LONG类型用于存储大段文本,但其DUMP函数不支持,需要借助ALTER SYSTEM DUMP BLOCK来查看其内部结构。 其次,数字类型在Oracle中包括NUMBER、INTEGER、SMALLINT等。NUMBER类型可以存储非常大的数值,并具有极高的...
Oracle 中有多种字符类型,包括 char、varchar、varchar2、long 等。 * char(n):定长字符串,最大长度为 2000 字节。char 类型的字符串长度是固定的,可以指定长度,否则默认为 1 字节长。 * varchar(n):可变长...
### Oracle新手入门指导之四——ORACLE数据类型 在Oracle数据库中,数据类型的选择对于确保数据的正确存储、处理效率以及资源的有效利用至关重要。本文将详细介绍Oracle中的各种数据类型及其特性,帮助初学者更好地...
- `text`: 大文本数据类型,等同于Oracle中的`LONG`类型。 - `ntext`: Unicode大文本数据类型,Oracle中没有直接对应的类型,可以使用`LONG`作为替代。 - **Oracle**: - `CHAR`: 固定长度的字符串,建议使用SQL ...
DB2/400 提供 VARCHAR 和 CLOB 与 Oracle 中的 RAW 和 LONG RAW 相对应。Oracle 也支持大对象:BLOB、CLOB、NCLOB 等。例如,Oracle 中的 BLOB 和 CLOB 可以提供 4GB 的空间,而 DB2/400 中的 BLOB 和 CLOB 只能存放...
LONG 数据类型已经被oracle废弃,推荐使用 LOB(Large OBject)数据类型来代替。 那么,什么是 LOB 数据类型?LOB 数据类型是 Oracle 数据库中的一种数据类型,用于存储大型的二进制数据或字符串数据。LOB 数据...
Oracle数据库LONG类型字段的完整C代码操作(CREATE INSERT SELECT DROP)之一--CREATE TABLE;免费下载有猫彬为你准备的代码包(已编译好,可直接运行,内含编译运行命令,直接复制粘贴即可
15. **LONG RAW**: 用于存储较大的二进制数据,同样不推荐在新版本的Oracle中使用,其在SQL Server中的对应类型为`image`。 16. **NCLOB**: 用于存储Unicode文本数据,在SQL Server中的对应类型为`ntext`。 综上所...
- `LONGRAW` 类型对应 `oracle.sql.RAW` - `NUMBER` 类型可以存储不同精度的数值,对应 `oracle.sql.NUMBER` - `CHAR` 类型在 Oracle 中有扩展为 `oracle.sql.CHAR` - `VARCHAR2` 类型在 Oracle 中也有扩展为 `...