OceanBaseデータベースでは、XMLType型とVARCHARデータ型の間に暗黙的な変換が類似しています。
ただし、ユーザーがXMLTypeを文字列として直接使用することは推奨されません。OceanBaseデータベースは、内部でXMLTypeデータをバイナリ形式で表現します。この表現方法はXPathクエリを最適化しますが、ユーザー入力の元の形式情報(例:XML element の改行、インデント、XML仕様で無視可能な空白など)も除去します。ユーザーがXMLTypeの出力形式を調整したい場合は、XMLSERIALIZE() 関数を使用できます。
XMLTypeデータ型と他のデータ型との変換ルールは次の表のとおりです。
ソースタイプ |
ターゲットタイプ |
暗黙的変換 |
明示的変換 |
|---|---|---|---|
| XMLType | VARCHAR2 | XMLTypeデータはVARCHAR2列に挿入でき、SUBSTR()などの関数を使用できます。 |
サポートされています。CAST(XMLType as VARCHAR2(n))を使用するか、XMLSERIALIZE()を使用できます。 |
| XMLType | CLOB | サポートされていません | サポートされていませんが、XMLSERIALIZE() 関数を使用して CLOB 型に変換できます。 |
| XMLType | BLOB | サポートされていません | サポートされていませんが、XMLSERIALIZE() 関数を使用して BLOB 型に変換できます。 |
| XMLType | その他の基本型 | サポートされていません | サポートされていませんが、XMLCAST() 関数を使用してXMLドキュメント内のテキストを他の基本型に変換できます。 |
| VARCHAR2 | XMLType | VARCHAR2 データはXMLType列に直接挿入できますが、XMLTypeを入力パラメータとする関数(例:EXTRACTVALUE())は直接使用できません。 |
サポートされていません |
| CLOB | XMLType | サポートされていません | サポートされていません |
| BLOB | XMLType | サポートされていません | サポートされていません |
| その他の基本型 | XMLType | サポートされていません | サポートされていません |
XMLType型は、CAST 関数を使用して暗黙的または明示的に VARCHAR、VARCHAR2、NVARCHAR2、CHAR に変換できます。しかし、上記の型からXMLType型への変換は CAST() 関数ではできません。変換例は以下のとおりです:
# 明示的変換の例
SELECT CAST(XMLPARSE(DOCUMENT '<a>123</a>') AS VARCHAR(100)) FROM DUAL;
SELECT CAST(XMLPARSE(DOCUMENT '<a>123</a>') AS VARCHAR2(100)) FROM DUAL;
SELECT CAST(XMLPARSE(DOCUMENT '<a>123</a>') AS NVARCHAR(100)) FROM DUAL;
SELECT CAST(XMLPARSE(DOCUMENT '<a>123</a>') AS CHAR(100)) FROM DUAL;
SELECT CAST(XMLPARSE(DOCUMENT '<a>123</a>') AS VARCHAR2(2)) FROM DUAL;
# 暗黙的変換の例
SELECT UPPER(XMLPARSE(DOCUMENT'<a>123</a>')) FROM DUAL;
SELECT LOWER(XMLPARSE(DOCUMENT'<a>123</a>')) FROM DUAL;
SELECT SUBSTR(XMLPARSE(DOCUMENT'<a>123</a>')) FROM DUAL;
SELECT LENGTH(XMLPARSE(DOCUMENT'<a>123</a>')) FROM DUAL;
関連ドキュメント
XMLTypeデータ型の変換に関するその他の関数の詳細については、以下を参照してください: