3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JSON 関連の新機能を試す(Oracle Database 19c)

Last updated at Posted at 2019-04-22

Oracle Database 18c/19cではJSON関連の新機能が増えています。Oracle 19cで増えたJSON関連関数と構文を使ってみました。非Exadata環境用のオンプレミス版Oracle Database 19cはまだ提供されていないため、LiveSQLを使って検証しています。

JSON_OBJECT関数

指定したデータをJSON型に変換して返す関数です。マニュアルはこちらです。
関数に渡すデータは非常に柔軟に指定できます。Oracle Database 19cでは、行データをすべてJSONに変換するためにJSON_OBJECT関数に'*'を指定できるようになりました。JSONオブジェクトのプロパティは列名がそのまま使われます。

json_object(*)

特定の列を指定することもできます。列名の大文字/小文字指定がJSONオブジェクトのプロパティに使われます。下記の図では、first_nameが小文字に、LAST_NAMEが大文字として出力されています。

json_object(first_name, LAST_NAME)

JSONデータの名前部分に任意の文字列を指定する場合は、 「KEY '名前' VALUE 列名」の形式で記述します。または「'名前' : 列名」の形式で指定することができます。

json_object('id' : employee_id)

NESTED COLUMNS構文

JSONデータの中から、特定のプロパティ値のみ取り出す NESTED COLUMNS構文が追加されました。JSON_TABLE関数よりも簡単に使うことができます。マニュアルはこちらです。

データの作成

CREATE TABLE文と、INSERT INTO文でHR.EMPLOYEESテーブルから新しいテーブルを作成します。
create data

NESTED COLUMN構文

NESTED COLUMNS構文で、jsonCol列に格納されたJSONデータからFIRST_NAMEとLAST_NAMEのみを取り出しています。

NESTED COLUMN

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?