
# 向量数据类型
向量数据类型包括floatvector和boolvector两种。
- floatvector数据类型是指多维数据中含有的数据为float类型，例如\[1.0,3.0,11.0,110.0,62.0,22.0,4.0\]。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  - floatvector成员仅支持单精度。单精度范围 -3.402E+38\~+3.402E+38，6位十进制数字精度。
  
  - floatvector不支持NULL、Nan、Inf作为元素，当向量中含有NULL值，数据库会报错。
  
  - floatvector不能为NULL，当插入、更新或转换NULL值作为向量数据时，数据库会报错。
  
  - 在某些场景下（执行计划走stream计划时），floatvector成员存储数字精度受GUC参数extra_float_digits控制，这可能导致相同数据在计算时结果不一致，设置extra_float_digits = 3可规避此问题。
    
- boolvector数据类型是指多维数据中含有的数据为bool类型，例如\[0,0,0,0,0,1,0,0,1,0,0,0\]。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  - boolvector数据类型成员可使用t(T)\\f(F)、y(Y)\\n(N)、1\\0、true\\false、yes\\no、on\\off等方式表达布尔型数据。
  
  - boolvector不支持NULL、Nan、Inf作为元素，当向量中含有NULL值，数据库会报错。
  
  - boolvector不能为NULL，当插入、更新或转换NULL值作为向量数据时，数据库会报错。
    
#### 向量类型的使用
向量类型的使用示例如下：
```
-- 创建含向量类型的表，同时设定数据维度。建表时向量类型必须要指定维度。
gaussdb=# CREATE TABLE t1(id int unique, repr floatvector(4));
gaussdb=# CREATE TABLE t2(id int unique, repr boolvector(3));
-- 插入数据
gaussdb=# INSERT INTO t1 VALUES(0, '[30,12,12,25]');
gaussdb=# INSERT INTO t2 VALUES(1, '[1, 0, 1]');
```
