SQL compilation error: syntax error line 1 at position 8 unexpected '-'

SQL compilation error: syntax error line 1 at position 8 unexpected '-'

我收到 SQL 编译错误:位置 8 处的语法错误行 1 意外“-”。

sql 查询是:

INSERT INTO table_name(col_names) values();

位置8是“INTO”的I

我受困于此尝试从记事本++搜索字符,但找不到。

根据您的玩具示例,您的列列表与 values 子句中的列数不匹配。您正在尝试将 0 个值插入到一些列中。

你需要这样的东西

INSERT INTO table_name(col_1, col_2, col_3) values(1, 'hello', 'world');

当我尝试与您的代码类似的操作时,我遇到了一个类似但不太有用的错误。我认为解析器根本无法理解没有输入的 values 子句,因此它甚至无法找出问题出在哪里,它只是给出一个通用的“您的插入有问题”错误。

你的“它坏了”的例子需要是可重现的。因此,您需要粘贴有问题的 not-working 代码(显然您不想粘贴)或玩具 sql。它应该看起来像:

create table toy_example(col_names text);

-- this works yippie!
insert into toy_example(col_names) values ('this is a value');

-- but this
insert into toy_example(col_names) values ();

/*
 Syntax error: unexpected ')'. (line 22)
*/

因为就目前而言:

我有一些 SQL 它给我一个错误

002020 (21S01): SQL compilation error: Insert value list does not match column list expecting 3 but got 1

我的代码如下所示:

SELECT 1;

不能真正使用。

谢谢@David Garrison 和@Simeon Pilgrim 花时间回答我的问题。

我的错误原因是:我在我的子查询中使用了 Postgres 数据类型:INTERVAL,其中包含连字符。

select CAST((DATE_TRUNC('MONTH', CURRENT_DATE) + INTERVAL '1 MONTH - 1 DAY') AS - 
DATE

so,snowflake 与上面的连字符不兼容,但是在编译 SQL 时它没有在正确的行号中显示错误,而是在第一行 INSERT INTO 中显示错误,如前所述在我的问题中。(我认为它是雪花中的一个错误)

所以为了让它与 snowflake 兼容,我使用了:

select CAST(LAST_DAY((DATE_TRUNC('MONTH', CURRENT_DATE))) AS DATE);

INTERVAL 将在雪花模式下工作但没有连字符,即:INTERVAL '30 DAYS', 但这对二月份不公平,所以我使用了 LAST_DAY 函数。

查询顺利 :D