Oracle Raw,number,varchar2...转换
在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一个数据库移到另一个数据库时,Oracle 服务器不执行字符集转换。存储实际列值所需要的字节数大小随每行大小而异,最多为 2,000 字节。
可能这样的数据类型在数据库效率上会提高,而且对数据由于字符集的不同而导致的不一致的可能性在这边也排除了。
这个字段在实际的用途中好像不多。
raw类型的介绍,在此引用了一下网友的blog:
RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节
==============================================================
SQL> create table datatype_test_raw(paddr raw(8));
Table created
SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw type test!'));
insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw type test!'))
ORA-01401: inserted value too large for column
SQL> alter table datatype_test_raw modify paddr raw(20);
Table altered
SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw type test!'));
insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw type test!'))
ORA-01401: inserted value too large for column
SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('This is a raw test!'));
1 row inserted
SQL> commit;
Commit complete
SQL> select * from datatype_test_raw;
PADDR
----------------------------------------
54686973206973206120726177207465737421
SQL> select utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
UTL_RAW.CAST_TO_VARCHAR2(PADDR
--------------------------------------------------------------------------------
This is a raw test!
SQL> insert into datatype_test_raw(paddr) values(utl_raw.cast_to_raw('中文测试'));
1 row inserted
SQL> commit;
Commit complete
SQL> select utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
UTL_RAW.CAST_TO_VARCHAR2(PADDR
--------------------------------------------------------------------------------
This is a raw test!
中文测试:
SQL> select paddr, utl_raw.cast_to_varchar2(paddr) from datatype_test_raw;
PADDR UTL_RAW.CAST_TO_VARCHAR2(PADDR
---------------------- --------------------------------------------------------------------------------
54686973206973206120726177207465737421 This is a raw test!
D6D0CEC4B2E2CAD4 中文测试
这里用到了两个函数:
utl_raw.cast_to_raw([varchar2]);--将varchar2转换为raw类型
utl_raw.cast_to_varchar2([raw]);--将raw转换为varchar2类型
这里varchar2的字符集一般是GB2312。
另外:
utl_raw包的几个其他的函数用法:
utl_raw.cast_from_number([number]);
utl_raw.cast_to_number([number]);
位操作:
utl_raw.bit_or();
utl_raw.bit_and();
utl_raw.bit_xor();
另外还有转换函数:
hextoraw(); --将对应16进制数转换为raw
当使用HEXTORAW时,会把字符串中数据当作16进制数。而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中
分享到:
相关推荐
- ENUM:预定义的一组值,Oracle没有直接对应,可用VARCHAR2或NUMBER代替。 - FLOAT:浮点数,Oracle的FLOAT(24)等同。 - INT和INTEGER:整数,Oracle的NUMBER(10,0)。 - LONGBLOB和LONGTEXT:存储大型对象,...
Raw数据类型不进行字符转换,所以非常适合存储原始的二进制数据。 3. Blob类型: Blob(Binary Large Object)数据类型用于存储大量的二进制数据,如图像、视频或音频文件。Blob可以存储的数据量远大于Raw类型,...
1. **字符类型**:`CHAR`是固定长度的字符类型,而`VARCHAR2`是可变长度的字符类型,最多可以存储4000个字符。 2. **大型对象类型**:`CLOB`用于存储大文本,`BLOB`用于存储二进制大对象,`LONG`和`LONG RAW`也是...
uid2 VARCHAR2(20), FOREIGN KEY (pid) REFERENCES photo(pid) ); ``` - **相片表(photo)** ```sql CREATE TABLE photo ( pid NUMBER PRIMARY KEY, pname VARCHAR2(20), photo LONG RAW ); ``` ### 3. ...
与Char和Varchar2不同,Raw保存的是原始二进制数据,不做任何字符编码转换。 7. **Long Raw**: 类似于Long,但专用于存储大块的二进制数据,最大长度2GB,通常用于大型图形或文档。 8. **Blob, Clob, NClob**: ...
- `VARCHAR`: 可变长度的字符串,Oracle 中对应 `VARCHAR2`,Java 中使用 `java.lang.String`。 - `YEAR`: 存储年份,Oracle 中没有直接对应的数据类型,通常使用 `DATE`。 2. **Oracle 数据类型** - `NUMBER`:...
- `VARCHAR2(n)`: 可变长度的字符串,`n`为字符数,最大4000个字符。 - `NVARCHAR2(n)`: 用于存储Unicode字符,最大2000个字符。 - `LONG`: 存储长文本,最大2GB。 4. **日期和时间类型**: - `DATE`: 包含...
2. **Varchar2(n)**: Varchar2是Oracle中最常用的可变长字符串数据类型,长度范围1到4000字节。与Char不同,Varchar2只存储实际数据的长度,不填充空格,因此更节省空间。Oracle 8i会自动删除前导和尾随的空格。...
CHAR 是固定长度的字符串,NCHAR 是国家语言支持的字符串,NVARCHAR2 是可变长度的字符串,VARCHAR2 是可变长度的字符串,LONGRAW 是可变长度的二进制字符串。 数值型数据类型 数值型数据类型包括 NUMBER、NUMERIC...
例如,当你从数据库查询数据时,需要知道如何将 Oracle 的 `NUMBER` 类型转换为 Java 中的 `BigDecimal`,或者如何处理 `TIMESTAMP` 类型以考虑时区信息。理解这些细节将确保数据的准确性和应用程序的兼容性。
Oracle数据库的NLS(国家语言支持)特性允许数据库在不同字符集间透明转换,确保全球化应用的数据兼容性。通过查询`nls_database_parameters`表,可以查看数据库的字符集设置。 在使用数据类型时,应根据实际需求...
* VARCHAR2:可变长度字符串,最大长度 4000 bytes。VARCHAR2 类型适合存储可变长度的字符串,如姓名、地址等。 * NCHAR:根据字符集而定的固定长度字符串,最大长度 2000 bytes。NCHAR 类型适合存储 Unicode 字符串...
uid2 VARCHAR2(20), FOREIGN KEY (pid) REFERENCES photo(pid) ); ``` - **程序实现**:本项目使用Java语言编写,并利用Oracle数据库进行数据存储。程序中涉及到的数据库连接代码如下: ```java private ...
uid2 VARCHAR2(20), FOREIGN KEY (pid) REFERENCES photo(pid) ); ``` - **创建相片表** (`photo`): ```sql CREATE TABLE photo ( pid NUMBER PRIMARY KEY, pname VARCHAR2(20), photo LONG RAW ); ``` ...
Oracle的数据类型包括字符(CHAR、VARCHAR2、LONG)、数值(NUMBER、BINARY_INTEGER、PLS_INTEGER)、日期时间(DATE)、RAW/LONG RAW、LOB(Large Object)等。例如,CHAR用于固定长度字符串,VARCHAR2用于可变长度...
PROCEDURE 拼音截取 (p_hanzi IN VARCHAR2, p_start IN NUMBER, p_length IN NUMBER, p_sub_pinyin OUT VARCHAR2); END 汉字转拼音包; / CREATE OR REPLACE PACKAGE BODY 汉字转拼音包 AS PROCEDURE 获取全拼 (p_...
Oracle数据库支持多种基本数据类型,如`CHAR`、`VARCHAR2`、`LONG`、`NUMBER`、`RAW`、`LONG RAW`、`DATE`、`ROWID`和`NULL`。`DATE`类型可以表示日期和时间,其格式可以通过`ALTER SESSION`命令或初始化参数`NLS_...