TO_VECTOR
TO_VECTOR
は、VARCHAR2
、CLOB
、BLOB
またはJSON
型の文字列を入力として受け取り、それをベクトルに変換し、ベクトルを出力として返すコンストラクタです。また、TO_VECTOR
は入力として別のベクトルを受け取り、その書式を調整し、調整されたベクトルを出力として返します。TO_VECTOR
は、VECTOR
と同義です。
パラメータ
-
expr
は次のいずれかと評価される必要があります。- ベクトルを表す文字列(文字型または
CLOB
)。 VECTOR
。BLOB
。BLOB
ではベクトルのバイナリ・バイトを表す必要があります。- JSON配列。配列内のすべての要素が数値である必要があります。
expr
がNULLの場合、結果はNULLになります。ベクトルの文字列表現は、大カッコで囲まれてカンマで区切られたNULL以外の数値の配列(
[1, 3.4, -05.60, 3e+4]
など)の形式である必要があります。TO_VECTOR
は、ベクトルの有効な文字列表現を、指定された形式のベクトルに変換します。形式が指定されていない場合は、デフォルトの形式が使用されます。 - ベクトルを表す文字列(文字型または
-
number_of_dimensions
は、作成するベクトルのディメンション数を表す数値である必要があります。ディメンション数は、アスタリスク(*)として指定することもできます。この場合、次元はexpr
によって判断されます。 -
format
は、トークンINT8
、FLOAT32
、FLOAT64
、BINARY
または*
のどれかである必要があります。これはベクトルのターゲットでの内部格納形式です。*
を使用した場合、形式はFLOAT32
になります。この動作は、ベクトル列の宣言とは異なります。
VECTOR(3, *)
型の列を宣言すると、挿入されたすべてのベクトルがそのまま格納され、書式は変更されません。 -
storage_format
は、トークンDENSE
、SPARSE
または*
のどれかである必要があります。格納形式が指定されていない場合や*
が使用されている場合は、入力タイプに応じて次のようになります:- テキスト入力: 格納形式はデフォルトで
DENSE
になります。 - JSON入力: 格納形式はデフォルトで
DENSE
になります。 VECTOR
入力: デフォルトはなく、格納形式は変更されません。BLOB
入力: デフォルトはなく、格納形式は変更されません。
- テキスト入力: 格納形式はデフォルトで
例
SELECT TO_VECTOR('[34.6, 77.8]'); TO_VECTOR('[34.6,77.8]') --------------------------------------------------------- [3.45999985E+001,7.78000031E+001] SELECT TO_VECTOR('[34.6, 77.8]', 2, FLOAT32); TO_VECTOR('[34.6,77.8]',2,FLOAT32) --------------------------------------------------------- [3.45999985E+001,7.78000031E+001] SELECT TO_VECTOR('[34.6, 77.8, -89.34]', 3, FLOAT32); TO_VECTOR('[34.6,77.8,-89.34]',3,FLOAT32) ----------------------------------------------------------- [3.45999985E+001,7.78000031E+001,-8.93399963E+001] SELECT TO_VECTOR('[34.6, 77.8, -89.34]', 3, FLOAT32, DENSE); TO_VECTOR('[34.6,77.8,-89.34]',3,FLOAT32,DENSE) --------------------------------------------------------------------- [3.45999985E+001,7.78000031E+001,-8.93399963E+001]
ノート:
-
Oracle Database 23aiに接続された23aiより前のOracle Clientライブラリを使用するアプリケーションでは、
TO_VECTOR
ファンクションを使用してベクトル・データを挿入します。次に例を示します。INSERT INTO vecTab VALUES(TO_VECTOR('[1.1, 2.9, 3.14]'));
-
Oracle Client 23aiライブラリまたはThinモード・ドライバを使用するアプリケーションでは、ベクトル・データを文字列または
CLOB
として直接挿入できます。次に例を示します。INSERT INTO vecTab VALUES ('[1.1, 2.9, 3.14]');