UTL_RAW
可以使用 UTL_RAW 包操作或检索原始数据类型的长度。
函数/存储过程 | 类型 | 返回类型 | 说明 |
---|---|---|---|
CAST_TO_RAW(c IN VARCHAR2) | 函数 | RAW | 将 VARCHAR2 字符串转换为 RAW 值。 |
CAST_TO_VARCHAR2(r IN RAW) | 函数 | VARCHAR2 | 将 RAW 值转换为 VARCHAR2 字符串。 |
CONCAT(r1 IN RAW, r2 IN RAW, r3 IN RAW,…) | 函数 | RAW | 将多个 RAW 值连接成一个 RAW 值。 |
CONVERT(r IN RAW, to_charset IN VARCHAR2, from_charset IN VARCHAR2 | 函数 | RAW | 将编码数据从一种编码转换为另一种编码,并将结果作为 RAW 值返回。 |
LENGTH(r IN RAW) | 函数 | NUMBER | 返回 RAW 值的长度。 |
SUBSTR(r IN RAW, pos IN INTEGER, len IN INTEGER) | 函数 | RAW | 返回 RAW 值的一部分。 |
与Oracle版本相比,POLARDB for Oracle的UTL_RAW实施是部分实施。仅支持上表中列出的函数和存储过程。
CAST_TO_RAW
CAST_TO_RAW函数将VARCHAR2字符串转换为RAW值。特征为:
CAST_TO_RAW(c VARCHAR2)
如果传递非NULL值,则此函数返回RAW值;如果传递NULL值,则此函数返回NULL。
参数
参数 | 说明 |
---|---|
c | 将转换为RAW的VARCHAR2值。 |
示例
以下示例使用CAST_TO_RAW函数将VARCHAR2字符串转换为RAW值:
DECLARE
v VARCHAR2;
r RAW;
BEGIN
v := 'Accounts';
dbms_output.put_line(v);
r := UTL_RAW.CAST_TO_RAW(v);
dbms_output.put_line(r);
END;
结果集包含原始字符串的内容以及转换的RAW值:
Accounts
\x4163636f756e7473
CAST_TO_VARCHAR2
CAST_TO_VARCHAR2函数将RAW数据转换为VARCHAR2数据。特征为:
CAST_TO_VARCHAR2(r RAW)
如果传递非NULL值,则此函数返回VARCHAR2值;如果传递NULL值,则此函数返回NULL。
参数
参数 | 说明 |
---|---|
r | 将转换为VARCHAR2值的RAW值。 |
示例
以下示例使用CAST_TO_VARCHAR2函数将RAW值转换为VARCHAR2字符串:
DECLARE
r RAW;
v VARCHAR2;
BEGIN
r := '\x4163636f756e7473'
dbms_output.put_line(v);
v := UTL_RAW.CAST_TO_VARCHAR2(r);
dbms_output.put_line(r);
END;
结果集包含原始字符串的内容以及转换的RAW值:
\x4163636f756e7473
Accounts
CONCAT
CONCAT函数将多个RAW值连接成一个RAW值。特征为:
CONCAT(r1 RAW, r2 RAW, r3 RAW,…)
此函数返回RAW值。与Oracle实施不同,POLARDB for Oracle实施是一种可变参数函数,并且不会限制可连接起来的值的数量。
参数
参数 | 说明 |
---|---|
r1, r2, r3,… | CONCAT将连接的RAW值。 |
示例
以下示例使用CONCAT函数将多个RAW值连接成一个RAW值:
SELECT UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.CONCAT('\x61', '\x62', '\x63')) FROM DUAL; concat
-------- abc(1 row)
随后,CAST_TO_VARCHAR2函数会将结果(连接的值)转换为VARCHAR2格式。
CONVERT
CONVERT函数将字符串从一种编码转换为另一种编码,并将结果作为RAW值返回。特征为:
CONVERT(r RAW, to_charset VARCHAR2, from_charset VARCHAR2)
此函数返回RAW值。
参数
参数 | 说明 |
---|---|
r | 将转换的RAW值。 |
to_charset | r将转换为的编码的名称。 |
from_charset | r将执行转换的源编码的名称。 |
示例
以下示例使用UTL_RAW.CAST_TO_RAW函数将VARCHAR2字符串(Accounts)转换为原始值,然后将该值从UTF8转换为LATIN7,再将其从LATIN7转换为UTF8:
DECLARE r RAW; v VARCHAR2;BEGIN v:= 'Accounts'; dbms_output.put_line(v);
r:= UTL_RAW.CAST_TO_RAW(v); dbms_output.put_line(r); r:= UTL_RAW.CONVERT(r, 'UTF8', 'LATIN7'); dbms_output.put_line(r); r:= UTL_RAW.CONVERT(r, 'LATIN7', 'UTF8'); dbms_output.put_line(r);
此示例返回VARCHAR2值、RAW值和转换的值:
Accounts
\x4163636f756e7473
\x4163636f756e7473
\x4163636f756e7473
LENGTH
LENGTH函数返回RAW值的长度。特征为:
LENGTH(r RAW)
此函数返回RAW值。
参数
参数 | 说明 |
---|---|
r | LENGTH将计算的RAW值。 |
示例
以下示例使用LENGTH函数返回RAW值的长度:
SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('Accounts')) FROM DUAL; length
--------8(1 row)
以下示例使用LENGTH函数返回包含多字节字符的RAW值的长度:
SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('独孤求败'));
length
--------
12
(1 row)
SUBSTR
SUBSTR函数返回RAW值的子字符串。特征为:
SUBSTR (r RAW, pos INTEGER, len INTEGER)
此函数返回RAW值。
参数
参数 | 说明 |
---|---|
r | 将从中返回子字符串的RAW值。 |
pos | 返回的子字符串的第一个字节的RAW值中的位置。
|
len | 将返回的最大字节数。 |
示例
以下示例使用SUBSTR函数选择一个从RAW值开头开始的3个字节的子字符串:
SELECT UTL_RAW.SUBSTR(UTL_RAW.CAST_TO_RAW('Accounts'), 3, 5) FROM DUAL;
substr-------- count(1 row)
以下示例使用SUBSTR函数选择一个从RAW值结尾开始的5个字节的子字符串:
SELECT UTL_RAW.SUBSTR(UTL_RAW.CAST_TO_RAW('Accounts'), -5 , 3) FROM DUAL;
substr
--------
oun
(1 row)
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论