📜  LONG 与 LOB 之间的区别(1)

📅  最后修改于: 2023-12-03 15:02:48.025000             🧑  作者: Mango

LONG 与 LOB 之间的区别

在Oracle数据库中,LONG和LOB是两种用于存储大量数据的数据类型,但它们有着一些重要的区别。本文将对LONG和LOB之间的区别进行详细的介绍。

LONG

LONG是Oracle数据库中的一种数据类型,用于存储变长字符型数据,最大长度为2GB。LONG数据类型存在于Oracle的很多版本中,并被广泛使用。

局限性

LONG存在着一些局限性,如不支持许多操作,不支持索引,无法使用LIKE操作符,也无法在WHERE子句中使用。它只适合存储较小的、不需要使用SQL查询的文本字符数据,如笔记、说明等。

示例

以下是一个示例表,其中包含名为NOTES的LONG类型列:

CREATE TABLE CUSTOMERS (
   CUSTOMER_ID   NUMBER,
   FIRST_NAME    VARCHAR2(20),
   LAST_NAME     VARCHAR2(20),
   NOTES         LONG
);
插入数据

要向名为NOTES的LONG类型列中插入数据,请使用INSERT语句的SET子句:

INSERT INTO CUSTOMERS (CUSTOMER_ID, FIRST_NAME, LAST_NAME, NOTES)
VALUES (1, 'John', 'Doe', 'This is a sample note.');
查询数据

要查询LONG类型列中的数据,请使用SELECT语句。但需要使用TO_LOB函数将LONG类型转换为LOB类型:

SELECT TO_LOB(NOTES) FROM CUSTOMERS WHERE CUSTOMER_ID = 1;
LOB

LOB是Oracle数据库中的一种数据类型,用于存储大对象(Large Objects),包括二进制数据(BLOB)和字符数据(CLOB)。LOB类型允许存储大量数据(最大长度为4GB)并提供许多有用的功能。

支持的操作

LOB支持许多操作,如创建索引、使用LIKE操作符、在WHERE子句中使用、使用函数等。此外,LOB数据可以通过DBMS_LOB PL/SQL包进行操作,包括读取、写入、截取、连接、比较、复制等。

示例

以下是一个示例表,其中包含名为NOTES的CLOB类型列:

CREATE TABLE CUSTOMERS (
   CUSTOMER_ID   NUMBER,
   FIRST_NAME    VARCHAR2(20),
   LAST_NAME     VARCHAR2(20),
   NOTES         CLOB
);
插入数据

要向名为NOTES的CLOB类型列中插入数据,请使用INSERT语句的SET子句:

INSERT INTO CUSTOMERS (CUSTOMER_ID, FIRST_NAME, LAST_NAME, NOTES)
VALUES (1, 'John', 'Doe', 'This is a sample note.');
查询数据

要查询CLOB类型列中的数据,请使用SELECT语句:

SELECT NOTES FROM CUSTOMERS WHERE CUSTOMER_ID = 1;
总结

LONG和LOB是Oracle数据库中用于存储大量数据的两种类型。但LONG存在着许多限制,而LOB则提供了许多有用的功能,使其成为更好的选择。对于存储较小、不需要使用SQL查询的字符数据,可以使用LONG,但对于存储大量数据或需要进行操作的数据,建议使用LOB。