Oracle CHARTOROWID() 函数使用指南

Oracle CHARTOROWID() 是一个内置函数,它将一个给定的字符串值转换为 ROWID 数据类型。

Oracle CHARTOROWID() 语法

这里是 Oracle CHARTOROWID() 函数的语法:

CHARTOROWID(rowid_str)

参数

rowid_str

必需的。 ROWID 值的字符串表示。它可以是 CHARVARCHAR2NCHARNVARCHAR2 数据类型的值。

返回值

Oracle CHARTOROWID() 函数将一个给定的字符串值转换为 ROWID 数据类型并返回转换后的值。

如果您传入了一个无效的 rowid 值, Oracle 将报告一个错误。

如果任意一个参数为 NULLCHARTOROWID() 将返回 NULL

Oracle CHARTOROWID() 示例

这里有几个展示了 Oracle CHARTOROWID() 函数用法的示例。

基本用法

下面的语句将一个字符类型的 rowid 字符串表示转换为 ROWID 类型的值。

SELECT
    CHARTOROWID('AAAFD1AAFAAAABSAA/')
FROM dual;

输出:

CHARTOROWID('AAAFD1AAFAAAABSAA/')
____________________________________
AAAFd1AAFAAAABSAA/

再来一个示例:

SELECT
    CHARTOROWID('AAATiDAAMAAALKzABa')
FROM dual;

输出:

CHARTOROWID('AAATIDAAMAAALKZABA')
____________________________________
AAATiDAAMAAALKzABa

看起来输出和普通的字符串没有什么不同,为了了解 CHARTOROWID() 函数的输出结果的类型,您可以使用 DUMP() 函数查看其内部结果:

SELECT
    DUMP('A'),
    DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'))
FROM dual;

输出:

DUMP('A')           DUMP(CHARTOROWID('AAATIDAAMAAALKZABA'))
___________________ _____________________________________________
Typ=96 Len=1: 65    Typ=69 Len=10: 0,1,56,131,3,0,178,179,0,90

你会发现,普通字符串的类型 ID 是 96, 而 CHARTOROWID() 函数的返回值的类型 ID 是 69

无效的 rowid

如果您传入了一个无效的 rowid 值, Oracle 将报告一个错误。

SELECT
    CHARTOROWID('abc')
FROM dual;

输出:

SQL Error: ORA-01410: invalid ROWID
01410. 00000 -  "invalid ROWID"

NULL 参数

如果任意一个参数为 NULLCHARTOROWID() 将返回 NULL

SET NULL 'NULL';
SELECT
    CHARTOROWID(NULL)
FROM dual;

输出:

CHARTOROWID(NULL)
____________________
NULL

在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。

结论

Oracle CHARTOROWID() 是一个内置函数,它将一个给定的字符串值转换为 ROWID 数据类型。