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"