MySQL VECTOR向量类型的用法(附带实例)
MySQL 9.0 增加了一个新的向量数据类型:VECTOR,它是一种可以存储 N 个数据项的数据结构(数组),语法格式如下:
向量类型的数据可以使用二进制字符串或者列表分隔的字符串表示,例如:
MySQL 9.0 同时还增加了一些用于操作 VECTOR 数据的向量函数。
VECTOR(N)其中,每个数据项都是一个 4 字节的单精度浮点数。默认的数据项为 2048 个,最大值为 16383。
向量类型的数据可以使用二进制字符串或者列表分隔的字符串表示,例如:
CREATE TABLE mytb1(id int, rgb vector(3)); INSERT INTO mytb1 VALUES (1, to_vector('[255,255,255]')); INSERT INTO mytb1 VALUES (2, to_vector('[128,255,0]')); INSERT INTO mytb1 VALUES (3, to_vector('[0,65,225]'));
MySQL 9.0 同时还增加了一些用于操作 VECTOR 数据的向量函数。
MySQL VECTOR操作函数
1) STRING_TO_VECTOR函数
STRING_TO_VECTOR 函数用于将字符串形式的向量数据转换为二进制。STRING_TO_VECTOR 函数的参数是一个字符串,包含一组由逗号分隔的浮点数,并且使用方括号([])进行引用。例如:mysql> SELECT HEX(STRING_TO_VECTOR("[1.08, -18.8, 88]")); +--------------------------------------------+ | HEX(STRING_TO_VECTOR("[1.08, -18.8, 88]")) | +--------------------------------------------+ | 713D8A3F666696C10000B042 | +--------------------------------------------+
2) VECTOR_TO_STRING函数
VECTOR_TO_STRING 函数用于将向量数据转换为字符串。例如:mysql> SELECT VECTOR_TO_STRING(STRING_TO_VECTOR("[1.08, -18.8, 88]")); +---------------------------------------------------------+ | VECTOR_TO_STRING(STRING_TO_VECTOR("[1.08, -18.8, 88]")) | +---------------------------------------------------------+ | [1.08000e+00,-1.88000e+01,8.80000e+01] | +---------------------------------------------------------+ mysql> SELECT VECTOR_TO_STRING(0x00000040000040444000A0400000E400); +------------------------------------------------------+ | VECTOR_TO_STRING(0x00000040000040444000A0400000E400) | +------------------------------------------------------+ | [2.00000e+00,7.68000e+02,5.00003e+00,2.09385e-38] | +------------------------------------------------------+输出结果中的浮点数使用科学记数法表示。
3) VECTOR_DIM函数
VECTOR_DIM 函数用于返回向量数据的维度,也就是数据项的个数。例如:mysql> SELECT VECTOR_DIM(rgb) FROM mytb1; +-----------------+ | VECTOR_DIM(rgb) | +-----------------+ | 3 | | 3 | | 3 | +-----------------+