雪花问题:将列作为参数传递给 SELECT,但不返回预期结果

use*_*179 0 sql snowflake-cloud-data-platform

在雪花中,我试图在选择查询中检索 2 列,但将一个列名作为参数传递。它不是从第二列的数据返回“VALUE”,而是返回我从外部传递的参数的值。

片段:

set col='NAME';

SELECT ID, $col from TABLE;
Run Code Online (Sandbox Code Playgroud)

实际结果:

ID  $col
123 NAME
Run Code Online (Sandbox Code Playgroud)

预期结果:

ID  $col
123 Mr. X
Run Code Online (Sandbox Code Playgroud)

Mik*_*ton 5

Snowflake 将变量视为字符串,而不是对象的名称。为此,您需要使用 IDENTIFIER() 函数。尝试这样的事情:

set col='NAME';

SELECT ID, IDENTIFIER($col) from TABLE;
Run Code Online (Sandbox Code Playgroud)

文档中有一些这样的例子,这里有解释:https : //docs.snowflake.com/en/sql-reference/session-variables.html#using-variables-in-sql