Oracle Databaseでは、CHARTOROWID()
関数は文字列値をROWID
に変換します データ型。
構文
構文は次のようになります:
CHARTOROWID(char)
char
の場所 CHAR
の1つです 、VARCHAR2
、NCHAR
、またはNVARCHAR2
データ型。
例
デモンストレーションの例を次に示します。
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
結果:
AAATiDAAMAAALKzABa
これはすばやく簡単な例ですが、最終結果がROWID
タイプであることを示していません。 。
ただし、次のように確認できます:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
結果:
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
ここでは、DUMP()
を使用しました 最初の5文字の内部表現を取得する関数。
ただし、重要なことに、この関数はタイプIDも返します。最初のものは96
です 、これはCHAR
のタイプIDです およびNCHAR
、2番目は69
、これはROWID
のタイプIDです 。
つまり、これはCHARTOROWID()
関数は実際には文字列をROWID
に変換します 。
データベースの例
これは、指定されたROWID
に基づいてデータベーステーブルの行を返す例です。 :
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
結果:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
無効なROWID
ROWID
を渡す エラーが発生します: SELECT CHARTOROWID('oops')
FROM DUAL;
結果:
Error report - ORA-01410: invalid ROWID
null
の場合 、結果はnull
です : SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
結果:
null
デフォルトでは、SQLclおよびSQL * Plusは、SQL SELECT
の結果としてnull値が発生するたびに空白を返します。 ステートメント。
ただし、SET NULL
を使用できます 返される別の文字列を指定します。ここでは、文字列null
を指定しました 返却する必要があります。
CHARTOROWID()
の呼び出し 引数がないとエラーが発生します:
SELECT CHARTOROWID()
FROM DUAL;
結果:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
また、あまりにも多くの引数を渡すと、エラーが発生します:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
結果:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"