在Snowflake中查询JSON时,属性名是否支持绑定参数?

9gm1akwq  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(127)

我在Snowflake数据库中的一个名为ROW_DATA的列中存储了一些JSON,如下所示:

{"Test Column 1": "abc", "Test Column 2": "def", "Test Column 3": "ghi"}

我尝试使用Snowflake内置的JSON数据解析(描述为here)查询JSON,并将参数设置为JSON属性名称,如下所示:

SELECT ROW_DATA::myParameter::string FROM TableName

其中:myParameter是我在C#代码中使用Snowflake Connector绑定的参数。不幸的是,这导致了一个错误:
不支持的数据类型“MYPARAMETER”
我还尝试对参数使用问号注解:

SELECT ROW_DATA:(?)::string FROM TableName

在这种情况下,会出现一个不同的错误,说“unexpected character)and?“,让我相信它没有正确地解析它。
我使用的C# sharp代码是:

string columnSql = "SELECT ROW_DATA::myParameter::string FROM TableName";

DbCommand colValCommand = conn.CreateCommand();
colValCommand.CommandText = columnSql;

DbParameter myParameter = colValCommand.CreateParameter();
nameParam.DbType = DbType.String;
nameParam.Value = "Test Column 1";
nameParam.ParameterName = "myParameter";
colValCommand.Parameters.Add(myParameter);

using (DbDataReader reader = await colValCommand.ExecuteReaderAsync())  //Error here
{
   ...
}

Snowflake和/或.NET Connector是否支持为此用例使用参数?

ars1skjm

ars1skjm1#

为了参数化字段名称GET函数应使用:
从一个ARRAY或一个OBJECT(或一个包含ARRAY或OBJECT的VARIANT)中提取一个值。

SELECT GET(ROW_DATA, ?)::STRING 
FROM TableName

相关问题