插入数组时 H2 数据库中的 SQL 语法错误



我实际上正在尝试将数据插入 H2 数据库中。启动应用程序服务器时,出现 SQL 语法错误异常。我真的不确定H2数据库是否支持在列中插入数组?下面的 sql 语句有任何问题吗?H2 数据库是否支持任何数组数据类型 float[], String[]...?

INSERT INTO weather (id,date,temperature) values ('1','2019-09-11','{"37.3","36.8","36.4"}');
CREATE TABLE WEATHER(
id INT AUTO_INCREMENT PRIMARY KEY,
date DATE,
temperature text[]
);
  1. 您不能在 H2 和其他数据库中将 PostgreSQL 样式的text[]用作数据类型。H2 具有数组的ARRAY数据类型:

    https://h2database.com/html/datatypes.html#array_type

    H2 1.4.201 还将支持具有组件类型的符合标准的数组数据类型:

    componentDataType ARRAY[maximumCardinality]

    如果你现在真的需要该功能,你可以从它当前的源代码构建 H2,但我认为你并不真正需要它,非标准的普通ARRAY也可以工作。

  2. '{"37.3","36.8","36.4"}'是字符串文本。H2 使用标准数组文字:

    ARRAY[element, …]

    https://h2database.com/html/grammar.html#array

    如果您使用某些过时的 H2 版本,则需要使用非标准(element, …)文字代替(但不要在最新版本中使用该变体,它们将按照标准的要求将其解析为行值(。

  3. 它与您的问题无关,但您确实应该使用1而不是'1'作为整数文本和DATE '2019-09-11'而不是'2019-09-11'作为日期文本,以避免从字符串转换为其他数据类型。

相关内容

最新更新