MySQL 9.0 版本注意事項
MySQL 9.0 支援 SQL 函數來處理 VECTOR
值。這些函數在本節中說明。
表 14.31 向量函數
名稱 | 描述 |
---|---|
STRING_TO_VECTOR() |
取得符合字串所表示之 VECTOR 資料行的二進位值 |
VECTOR_DIM() |
取得向量的長度 (也就是它包含的項目數) |
VECTOR_TO_STRING() |
取得 VECTOR 資料行的字串表示,其值為二進位字串 |
將向量的字串表示轉換為二進位表示。字串的預期格式包含以逗號分隔的一個或多個浮點數值清單,並以方括號 (
[
]
) 括住。數值可以使用十進位或科學符號表示。由於引數是字串,因此必須加上引號。TO_VECTOR()
是此函數的同義詞。範例
mysql> SELECT STRING_TO_VECTOR("[1.05, -17.8, 32]"); +---------------------------------------+ | STRING_TO_VECTOR("[1.05, -17.8, 32]") | +---------------------------------------+ | 0x6666863F66668EC100000042 | +---------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT TO_VECTOR("[1.05, -17.8, 32, 123.456]"); +-----------------------------------------+ | TO_VECTOR("[1.05, -17.8, 32, 123.456]") | +-----------------------------------------+ | 0x6666863F66668EC10000004279E9F642 | +-----------------------------------------+ 1 row in set (0.00 sec)
VECTOR_TO_STRING()
是此函數的反函數mysql> SELECT VECTOR_TO_STRING(STRING_TO_VECTOR("[1.05, -17.8, 32]")); +---------------------------------------------------------+ | VECTOR_TO_STRING(STRING_TO_VECTOR("[1.05, -17.8, 32]")) | +---------------------------------------------------------+ | [1.05000e+00,-1.78000e+01,3.20000e+01] | +---------------------------------------------------------+ 1 row in set (0.00 sec)
給定
VECTOR
資料行值,此函數會傳回向量包含的項目數。範例
mysql> SELECT VECTOR_DIM(0x0040004000800080); +--------------------------------+ | VECTOR_DIM(0x0040004000800080) | +--------------------------------+ | 2 | +--------------------------------+ 1 row in set (0.00 sec) mysql> SELECT VECTOR_DIM(TO_VECTOR('[2, 3, 5]') ); +-------------------------------------+ | VECTOR_DIM(TO_VECTOR('[2, 3, 5]') ) | +-------------------------------------+ | 3 | +-------------------------------------+ 1 row in set (0.00 sec)
無法剖析為向量值的此函數引數會引發錯誤。
給定
VECTOR
資料行值的二進位表示,此函數會傳回其字串表示,其格式與STRING_TO_VECTOR()
函數的引數所述格式相同。FROM_VECTOR()
可接受作為此函數的同義詞。範例
mysql> SELECT VECTOR_TO_STRING(0x00000040000040400000A0400000E040); +------------------------------------------------------+ | VECTOR_TO_STRING(0x00000040000040400000A0400000E040) | +------------------------------------------------------+ | [2.00000e+00,3.00000e+00,5.00000e+00,7.00000e+00] | +------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT FROM_VECTOR(0x00000040000040400000A040); +-----------------------------------------+ | FROM_VECTOR(0x00000040000040400000A040) | +-----------------------------------------+ | [2.00000e+00,3.00000e+00,5.00000e+00] | +-----------------------------------------+ 1 row in set (0.00 sec)
無法剖析為向量值的此函數引數會引發錯誤。
此函數輸出的最大大小為 262128 (16 * 16383) 個位元組。