SQL 编译错误:位置 56 处的错误第 2 行无效标识符

Posted

技术标签:

【中文标题】SQL 编译错误:位置 56 处的错误第 2 行无效标识符【英文标题】:SQL compilation error: error line 2 at position 56 invalid identifier 【发布时间】:2020-09-02 20:27:18 【问题描述】:

我需要一些帮助来解决错误。我已经使用 ACCCOUNTADMIN 角色登录到 Snowflake(也适用于工作表)。当我不添加 WHERE 子句时,我可以成功运行查询。当我添加 WHERE 子句时,它会引发错误。这是两个查询。

成功查询:

SELECT NAME, CREATED_ON, EMAIL, MUST_CHANGE_PASSWORD, EXPIRES_AT, PASSWORD_LAST_SET_TIME 
FROM "SNOWFLAKE"."ACCOUNT_USAGE"."USERS";

错误查询:

SELECT NAME, CREATED_ON, EMAIL, MUST_CHANGE_PASSWORD, EXPIRES_AT, PASSWORD_LAST_SET_TIME 
FROM "SNOWFLAKE"."ACCOUNT_USAGE"."USERS" 
WHERE "NAME" = "MYTESTUSER_1";

错误:

'MYTESTUSER_1'

WHERE 子句没有问题。对应用户已存在。我也检查了其他一些用户。同样的错误。

请帮忙。

【问题讨论】:

【参考方案1】:

在 Snowflake 在这方面遵循的标准 SQL 中,双引号代表标识符(列名、表名等)。在 where 子句的上下文中,数据库将 "MYTESTUSER_1" 理解为列的名称(显然,它不存在),因此您得到了错误。

你想要一个文字字符串,所以你需要单引号。也就是改变:

WHERE "NAME" = "MYTESTUSER_1"

收件人:

WHERE "NAME" = 'MYTESTUSER_1'

【讨论】:

谢谢。这是我这边的愚蠢错误。我忽略了单引号和双引号。

以上是关于SQL 编译错误:位置 56 处的错误第 2 行无效标识符的主要内容,如果未能解决你的问题,请参考以下文章

Snowflake SQL 编译错误:位置 XX 处的语法错误行 XX 意外 '('

请问如何让这些代码行无错误运行

SQL 编译错误:位置 157 的语法错误第 5 行意外'<EOF>'

雪花声明在程序中不起作用

c#命令行无错误行号

新帐户命令未将电子邮件识别为字符串