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) 字节。