4.2.6 extracts
登録した文書または文字列データを出力します。出力形式には次に示す種類があります。
-
原文書出力(SGML型とFREEWORD型で形式が異なります)
-
SGML出力
-
プレーン出力
-
XML出力
どの出力形式で出力するかは,extracts関数の引数で区別されます。
なお,FREEWORD型では,SGML出力,プレーン出力,およびXML出力は使用できません。
特に,文字コードutf-8でこの関数を使用する場合,次の制限があります。
-
SGML出力は使用できません。
-
引数は必ずMS-Unicodeで記述してください。
また,extracts関数を使用したSQLの前処理後(PREPARE文の発行後),DESCRIBE〔OUTPUT〕文の実行時にSQL記述領域に設定されるデータの長さは次のとおりです。
-
SGMLTEXT型の場合:2ギガバイト(2,147,483,647バイト)
-
FREEWORD型の場合:32,000バイト
次に,各出力形式について説明します。
(1) 原文書出力(SGMLTEXT型の場合)
(a) 機能
登録した文書全体(原文書)を出力します。
(b) 書式
extracts(列指定)
(c) 入力
列指定
(d) 戻り値
テキストデータ(BLOB)
(e) 詳細
列指定には,検索をするSGMLTEXT型の列名を指定します。
(f) SQL文の例
- 表「reports」のSGMLTEXT型の列「doc」の「概要」部分に文字列「COMPUTER」を含む文書全体(原文書)を出力する(文書の最上位構造は「文章」)。
SELECT extracts(doc) FROM reports WHERE contains(doc, '文章[概要{"COMPUTER"}]' ) IS TRUE
(2) 原文書出力(FREEWORD型の場合)
(a) 機能
登録した文字列データ全体(原文書)を出力します。
(b) 書式
extracts(列指定)
(c) 入力
列指定
(d) 戻り値
文字列データ(VARCHAR)
(e) 詳細
列指定には,FREEWORD型の列名称を指定します。
(f) SQL文の例
- 表「reports」のFREEWORD型の列「fword」に文字列「COMPUTER」を含む文字列全体(原文書)を出力する。
SELECT extracts(fword) FROM reports WHERE contains(fword, '{"COMPUTER"}' ) IS TRUE
(3) SGML出力
(a) 機能
SGML文書の特定構造の抽出およびハイライトタグの埋め込みをして,SGML形式で出力します。出力文書には,DTDを付けます。
(b) 書式
extracts(列指定,抽出構造名,ハイライト位置条件式,ハイライトタグ名)
(c) 入力
-
列指定
-
抽出構造名(varchar)(最大1,024バイト)
-
ハイライト位置条件式(varchar)(最大32,000バイト)
-
ハイライトタグ名(varchar)(最大255バイト)
(d) 戻り値
テキストデータ(BLOB)
(e) 詳細
-
列指定には,検索するSGMLTEXT型の列名を指定します。なお,FREEWORD型の列は指定できません。
-
抽出構造名には,抽出する文書要素のその構造名を指定します。何も指定しない場合は,文書全体を出力します。下位の構造を指定する場合,最上位の構造から順に記述し,"."(ピリオド)でつないでください。
-
複数個の文書要素を抽出する場合は,抽出構造名を";"(セミコロン)で区切って記述してください。なお,抽出構造名はワイルドカードが指定できます。ワイルドカード指定の方法は,全文検索条件式の構造名と同形式です。
-
ハイライト位置条件式には,ハイライトタグを埋め込む位置を指定する条件式を指定します。ハイライト位置条件式は,全文検索条件式と同形式です。ただし,重みおよびNOT条件は記述しても無視されます。除外文字の検索,および拡張NOTは指定できません。何も指定しない場合はハイライトタグは埋め込まれません。
-
ハイライトタグ名には,ハイライト位置条件式を満たす位置に埋め込むタグの名称を指定します。何も指定しない場合にはハイライトタグは埋め込まれません。
(f) SQL文の例
- 表「reports」のSGMLTEXT型の列「doc」の「概要」部分に文字列「COMPUTER」を含む文書の「概要」をSGML形式で出力する。その際,文字列「COMPUTER」を強調表示するハイライトタグ(STRONG)を埋め込む(文書の最上位構造は「文章」)。
SELECT extracts(doc, '文章.概要', '文章[概要{"COMPUTER"}]', 'STRONG') FROM reports WHERE contains(doc, '文章[概要{"COMPUTER"}]') IS TRUE
(4) プレーン出力
(a) 機能
構造化文書の特定構造の抽出をして,プレーン形式で出力します。
(b) 書式
extracts(列指定,抽出構造名)
(c) 入力
-
列指定
-
抽出構造名(varchar)(最大1,024バイト)
(d) 戻り値
テキストデータ(BLOB)
(e) 詳細
-
列指定には,検索するSGMLTEXT型の列名を指定します。なお,FREEWORD型の列は指定できません。
-
抽出構造名には,抽出する文書要素のその構造名で指定します。何も指定しない場合は,文書全体を出力します。下位の構造を指定する場合,最上位の構造から順に記述し,"."(ピリオド)でつないでください。
-
複数個の文書要素を抽出する場合は,抽出構造名を";"(セミコロン)で区切って記述してください。なお,抽出構造名はワイルドカードが指定できます。ワイルドカード指定の方法は,全文検索条件の構造名と同形式です。
(f) SQL文の例
- 表「reports」のSGMLTEXT型の列「doc」の「概要」部分に文字列「COMPUTER」を含む文書の「概要」をプレーン形式で出力する(文書の最上位構造は「文章」)。
SELECT extracts(doc, '文章.概要') FROM reports WHERE contains(doc, '文章[概要{"COMPUTER"}]') IS TRUE
(5) XML出力
(a) 機能
構造化文書の特定構造の抽出,およびハイライトタグの埋め込みをして,ウェルフォームドXML文書で出力します。出力文書には,XML宣言を付けます。
(b) 書式
extracts(列指定,抽出構造名,ハイライト位置条件式,ハイライトタグ名,ドキュメントタイプ)
(c) 入力
-
列指定
-
抽出構造名(varchar)(最大1,024バイト)
-
ハイライト位置条件式(varchar)(最大32,000バイト)
-
ハイライトタグ名(varchar)(最大255バイト)
-
ドキュメントタイプ 'XML'
(d) 戻り値
テキストデータ(BLOB)
(e) 詳細
-
列指定には,検索するSGMLTEXT型の列名を指定します。なお,FREEWORD型の列は指定できません。
-
抽出構造名には,抽出する文書要素のその構造名を指定します。何も指定しない場合は,文書全体を出力します。下位の構造を指定する場合,最上位の構造から順に記述し,"."(ピリオド)でつないでください。
-
複数個の文書要素を抽出する場合は,抽出構造名を";"(セミコロン)で区切って記述してください。なお,抽出構造名はワイルドカードが指定できます。ワイルドカード指定の方法は,全文検索条件式の構造名と同形式です。
-
ハイライト位置条件式には,ハイライトタグを埋め込む位置を指定する条件式を指定します。ハイライト位置条件式は,全文検索条件式と同形式です。ただし,重みおよびNOT条件は記述しても無視されます。除外文字検索は指定できません。何も指定しない場合はハイライトタグは埋め込まれません。
-
ハイライトタグ名には,ハイライト位置条件式を満たす位置に埋め込むタグの名称を指定します。何も指定しない場合にはハイライトタグは埋め込まれません。
-
ドキュメントタイプには 'XML' を指定してください。
-
出力されるXML文書は,XML規格のバージョン1.0のウェルフォームドXML文書です。
(f) SQL文の例
- 表「reports」のSGMLTEXT型の列「doc」の「概要」部分に文字列「COMPUTER」を含む文書の「概要」をXML形式で出力する。その際,文字列「COMPUTER」を強調表示するハイライトタグ(STRONG)を埋め込む(文書の最上位構造は「文章」)。
SELECT extracts(doc, '文章.概要', '文章[概要{"COMPUTER"}]', 'STRONG','XML') FROM reports WHERE contains(doc, '文章[概要{"COMPUTER"}]') IS TRUE