【问题标题】:Snowflake: SELECT "COLUMN" with double quotes雪花:用双引号选择“COLUMN”
【发布时间】:2019-10-16 15:48:18
【问题描述】:

我有一个客户,他们的 Snowflake 实例要求列名带有双引号。示例:从“lk_category”中选择“CategoryName”; 有谁知道如何关闭此功能?

【问题讨论】:

  • 在 Oracle 中,当字段名称与关键字匹配时,引号是必需的。
  • 因为您的客户创建的表带有双引号内的列,它们现在区分大小写,必须使用双引号来引用它们。有一个 Quoted_Identifiers_Ignore_Case 变量可以切换到 TRUE 用于会话,但它对已经存在的对象没有影响。

标签: sql snowflake-cloud-data-platform


【解决方案1】:

Snowflake documentation 确实解释了一些关于标识符的内容。

关键点是 引用的标识符 必须完全按照它们的定义来引用。所以,以下是不同的:

"ABC"
"abc"
"Abc"

不带引号的标识符不区分大小写,因此以下相同:

ABC
abc
Abc

作为奖励,这些也相当于:

"ABC"

因为 Snowflake 使用大写字母解析未加引号的标识符。

如果数据库已经使用带引号的标识符创建。 . .好吧,你可以去改变它。

Snowflake 已确定这是一个问题。您可以通过设置QUOTED_IDENTIFIERS_IGNORE_CASE 参数来关闭引用的行为。

【讨论】:

    【解决方案2】:

    关于你的问题:

    SELECT """CategoryName""" FROM lk_category
    

    ……就是答案。双数据透视表也有类似的问题。

    请使用:

    Describe View/Table Table/View_Name
    

    如果存在带有双引号 Ex:"Name" 的字段名称,我们将获得列名称列表。

    然后要选择它,我们应该使用额外的引号作为转义字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2020-05-01
      • 2013-07-28
      • 1970-01-01
      相关资源
      最近更新 更多