SQL 转换名为 "file" 的列时出现编译错误

SQL compilation error when casting a column named "file"

在投射名为 file 的列时,Snowflake returns 出现奇怪的错误。没有类型转换就不会发生错误。

CREATE TABLE my_table (file VARCHAR);
Table MY_TABLE successfully created.

SELECT file FROM my_table;
0 Row(s) produced.

SELECT file::VARCHAR FROM my_table;
001003 (42000): SQL compilation error: parse error line 1 at position 12 near '58'.

有一个非常简单的解决方案 - 引用列标识符:

SELECT "FILE"::VARCHAR FROM my_table;

但是,最好避免使用 file 作为列名,而改用 file_namefile_path 之类的名称。

不过,该错误消息肯定可以改进!

而且 file 似乎应该是 reserved keyword(截至 2020 年 2 月 24 日不是这种情况)。