zoj*_*wek 2 snowflake-cloud-data-platform
无论出于何种原因,数据库中有一个名为 的列order。我无法在 Snowflake 的查询中选择它。以下均因以下原因而失败
SQL 编译错误:第 1 行语法错误,位置 9 出现意外的“顺序”。
// Obviously, this fails.
select order
from example_table
// Also fails
select a.order
from example_table as a
// Identifier doesn't exist.
select "order"
from example_table
Run Code Online (Sandbox Code Playgroud)
我不知道如何选择此专栏。我无法更改基础数据库表中列的命名。
它在两种情况下都按预期工作:
\nCREATE OR REPLACE TABLE example_table("order" INT);\nINSERT INTO example_table VALUES (1),(2);\n\nSELECT "order" FROM example_table;\n-- 1\n-- 2\n\nSELECT e."order" FROM example_table e;\n-- 1\n-- 2\nRun Code Online (Sandbox Code Playgroud)\n很可能使用了不可见字符或名称不是所讨论的小写字母。当引用标识符时,"它必须是创建时的 1:1。
\n\n\n如果将标识符放在双引号内(例如 \xe2\x80\x9cMy 带有空格和标点符号的标识符。\xe2\x80\x9d),则适用以下规则:
\n当存储和解析标识符时,保留标识符的大小写(例如,“id”被存储并解析为id)。
\n
CREATE OR REPLACE TABLE example_table("Order" INT);\nINSERT INTO example_table VALUES (1),(2);\n\nSELECT "order" FROM example_table;\n-- Error: invalid identifier \'"order"\' (line 17)\n\nSELECT "Order" FROM example_table;\n-- 1\n-- 2 \nRun Code Online (Sandbox Code Playgroud)\n可以使用下面描述的方法之一找到“实际”列名称:
\nDESCRIBE TABLE example_table;\nSELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ILIKE \'example_table\';\n\nSELECT GET_DDL(\'table\', \'public.example_table\');\n-- create or replace TABLE EXAMPLE_TABLE ( "Order" NUMBER(38,0) );\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1418 次 |
| 最近记录: |