搜索
首页数据库mysql教程Oracle 中LONG RAW BLOB CLOB类型介绍

Oracle 中LONG RAW BLOB CLOB类型介绍

说明:

RAW: 未加工类型,可存储二进制数据或字节符
LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列【不建议使用】
LONG RAW: 可变长二进制数据,最长2G 【不建议使用】
CLOB: 字符大对象Clob 用来存储单字节的字符数据;大型文本,例如XML数据。
NCLOB: 用来存储多字节的字符数据
BLOB: 用于存储二进制大对象数据;例如数码照片;
BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。
bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对Oracle来说是只读的,也不参与事务性控制和数据恢复.
  
CLOB,,NCLOB,BLOB都是内部的LOB(Large Object)类型,最长4G,没有LONG只能有一列的限制

注意: LONG 和 LONG RAW在Oracle新版已不推荐使用(使用BLOB替代),只是为了向后兼容而保留着。

本文着重介绍:RAW/CLOB/BLOB

1、RAW类型
1.1 介绍
You use the RAW datatype to store binary data or byte strings. For example, a RAW
variable might store a sequence of graphics characters or a digitized picture. Raw data
is like VARCHAR2 data, except that PL/SQL does not interpret raw data. Likewise,
Oracle Net does no character set conversions when you transmit raw data from one
system to another.
The RAW datatype takes a required parameter that lets you specify a maximum size up
to 32767 bytes. The syntax follows:
RAW(maximum_size)
You cannot use a symbolic constant or variable to specify the maximum size; you must
use an integer literal in the range 1 .. 32767.
You cannot insert RAW values longer than 2000 bytes into a RAW column. You can insert
any RAW value into a LONG RAW database column because the maximum width of a
LONG RAW column is 2147483648 bytes or two gigabytes. However, you cannot retrieve
a value longer than 32767 bytes from a LONG RAW column into a RAW variable. Note
that the LONG RAW datatype is supported only for backward compatibility; see “LONG
and LONG RAW Datatypes” on page 3-5 for more information.

RAW英语的意思为:生的;未加工的;
你可以使用RAW类型存储二进制数据或字节符。例如,一个RAW变量可以存储一系列图形字符或一张数码照片。
RAW数据就像VARCHAR2数据,除了一点:PL/SQL不会对其进行解释。同样的,当你在传输RAW数据时,Oracle Net不会对其进行字符集转换。

RAW数据类型要求指定一个最大值到32767的参数;

声明格式如下: RAW(maximum_size)
你不能使用一个符号常量或变量来代替该参数而必须使用1..32767中的任一整数。

你不能往RAW列中插入超过2000字节的字符;
你可以往long raw列中插入任何raw数据,最大支持2G。然而,反过来则无法一次性取出超过32767字节的raw数据。

此处需要注意,long raw是早起版本的类型;现在已不建议使用;详细见以下内容:

1.2 相关工具
–包
utl_raw

–函数
utl_raw.cast_to_raw
utl_raw.cast_to_number
utl_raw.cast_to_varchar2
hextoraw

RAW保存的为16进制数。当使用HEXTORAW时,会把字符串中数据当作16进制数。
而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中。

1.3 例子

drop table test_raw;
create table test_raw(msg  raw(2000));


SCOTT@orcl> insert into test_raw values('Dylan100');
insert into test_raw values('Dylan100')
                            *
第 1 行出现错误:
ORA-01465: 无效的十六进制数字

--这个地方注意是十六进制
SCOTT@orcl> insert into test_raw values(utl_raw.cast_to_raw('Dylan100'));

已创建 1 行。

SCOTT@orcl> commit;

--查看
select msg from test_raw;
MSG
------------------------------------------------------------------------------
3C786D6C3E3C6E616D653E44796C616E3C2F6E616D653E3C73636F72653E3130303C2F73636F72
653E3C2F786D6C3E

0ABC

SCOTT@orcl> select utl_raw.cast_to_varchar2(msg) from test_raw;

UTL_RAW.CAST_TO_VARCHAR2(MSG)
------------------------------------------------------------------------------
Dylan1002、LONG和LONG RAW类型

可以使用LONG类型存储变长字符串。Long类型就像VARCHAR2一样,除了LONG的最大容量为32760;

使用LONG RAW类型存储二进制数据或字节字符串。LONG RAW数据就像LONG数据,除了LONG RAW数据不会被PL/SQL解释。
LONG RAW的最大容量也为32760.

你可以往LONG列中插入任何LONG数据,最大长度为2G。然而,PL/SQL中的LONG类型变量只能支持到32760。
这条规则同样适用于LONG RAW类型。

表中的LONG列可以存储文本,字符数组,甚至短文档。可以针对该类型列做UPDATE, INSERT, 和SELECT 操作。
但是无法再表达式,SQL函数调用或特定的SQL条件语句例如WHERE, GROUP BY和CONNECT BY。

In SQL statements, PL/SQL binds LONG values as VARCHAR2, not as LONG. However,
if the length of the bound VARCHAR2 exceeds the maximum width of a VARCHAR2
column (4000 bytes), Oracle converts the bind type to LONG automatically, then issues
an error message because you cannot pass LONG values to a SQL function

SQL语句中, PL/SQL将LONG类型作为VARCHAR2类型绑定。然而,如果所绑定的VARCHAR2长度超出了4000,ORACLE会自动转换到LONG,
然后抛出一个错误因为你不能将LONG值传递给SQL函数。

--例如:
SCOTT@orcl> create table long_test(id number, msg long);

表已创建。

SCOTT@orcl> insert into long_test values(1,'hello world');

已创建 1 行。

SCOTT@orcl> commit;

提交完成。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
您可以使用哪些工具来监视MySQL性能?您可以使用哪些工具来监视MySQL性能?Apr 23, 2025 am 12:21 AM

如何有效监控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。1.使用mysqladmin查看连接数。2.用SHOWGLOBALSTATUS查看查询数。3.PMM提供详细性能数据和图形化界面。4.MySQLEnterpriseMonitor提供丰富的监控功能和报警机制。

MySQL与SQL Server有何不同?MySQL与SQL Server有何不同?Apr 23, 2025 am 12:20 AM

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显着差异,选择时需考虑项目规模和未来扩展性。

在哪些情况下,您可以选择SQL Server而不是MySQL?在哪些情况下,您可以选择SQL Server而不是MySQL?Apr 23, 2025 am 12:20 AM

在需要高可用性、高级安全性和良好集成性的企业级应用场景下,应选择SQLServer而不是MySQL。1)SQLServer提供企业级功能,如高可用性和高级安全性。2)它与微软生态系统如VisualStudio和PowerBI紧密集成。3)SQLServer在性能优化方面表现出色,支持内存优化表和列存储索引。

MySQL如何处理角色集和碰撞?MySQL如何处理角色集和碰撞?Apr 23, 2025 am 12:19 AM

mySqlManagesCharacterSetsetSandCollat​​ionsyutusututf-8asthEdeFault,允许ConfigurationAtdataBase,table和columnlevels,AndrequiringCarefullageLignmentToavoidMismatches.1)setDefeaultCharactersetTercharactersetEtCollacterSeteTandColletationForAdataBase.2)conformentcollecharactersettersetertersetcollat​​ertersetcollat​​ioncollat​​ion

MySQL中有什么触发器?MySQL中有什么触发器?Apr 23, 2025 am 12:11 AM

MySQL触发器是与表相关联的自动执行的存储过程,用于在特定数据操作时执行一系列操作。1)触发器定义与作用:用于数据校验、日志记录等。2)工作原理:分为BEFORE和AFTER,支持行级触发。3)使用示例:可用于记录薪资变更或更新库存。4)调试技巧:使用SHOWTRIGGERS和SHOWCREATETRIGGER命令。5)性能优化:避免复杂操作,使用索引,管理事务。

您如何在MySQL中创建和管理用户帐户?您如何在MySQL中创建和管理用户帐户?Apr 22, 2025 pm 06:05 PM

在MySQL中创建和管理用户账户的步骤如下:1.创建用户:使用CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';2.分配权限:使用GRANTSELECT,INSERT,UPDATEONmydatabase.TO'newuser'@'localhost';3.修正权限错误:使用REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost';然后重新分配权限;4.优化权限:使用SHOWGRA

MySQL与Oracle有何不同?MySQL与Oracle有何不同?Apr 22, 2025 pm 05:57 PM

MySQL适合快速开发和中小型应用,Oracle适合大型企业和高可用性需求。1)MySQL开源、易用,适用于Web应用和中小型企业。2)Oracle功能强大,适合大型企业和政府机构。3)MySQL支持多种存储引擎,Oracle提供丰富的企业级功能。

与其他关系数据库相比,使用MySQL的缺点是什么?与其他关系数据库相比,使用MySQL的缺点是什么?Apr 22, 2025 pm 05:49 PM

MySQL相比其他关系型数据库的劣势包括:1.性能问题:在处理大规模数据时可能遇到瓶颈,PostgreSQL在复杂查询和大数据处理上表现更优。2.扩展性:水平扩展能力不如GoogleSpanner和AmazonAurora。3.功能限制:在高级功能上不如PostgreSQL和Oracle,某些功能需要更多自定义代码和维护。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版