Snowflake中通过RESULT_SCAN查询VALUE列为何报invalid identifier错误?
Snowflake中RESULT_SCAN查询指定列报错的原因及解决方法
问题场景
以下代码可正常执行:
CREATE USER test PASSWORD='test'; DESC USER test; SELECT * from TABLE(RESULT_SCAN(LAST_QUERY_ID()));
但尝试仅返回单个列时执行以下代码:
CREATE USER test PASSWORD='test'; DESC USER test; SELECT value from TABLE(RESULT_SCAN(LAST_QUERY_ID()));
会触发报错:
Error: invalid identifier 'VALUE'.
原因分析
Snowflake对标识符的大小写规则是:未用双引号包裹的标识符会被自动转换为大写。而DESC USER返回的结果集里,列名是大小写敏感的小写形式("value")。当你直接写SELECT value时,Snowflake会自动将其转换为SELECT VALUE,但结果集中并不存在大写的VALUE列,因此抛出"无效标识符"的错误。
解决方法
使用双引号包裹列名,严格匹配结果集中列名的大小写即可:
CREATE USER test PASSWORD='test'; DESC USER test; SELECT "value" from TABLE(RESULT_SCAN(LAST_QUERY_ID()));
如果不确定列名的准确大小写,可以先通过SELECT *查看结果集的列名,再用双引号包裹对应列名进行查询。
内容的提问来源于stack exchange,提问作者SecretIndividual
相关产品推荐
相关产品推荐

