【问题标题】:Snowflake - Double Quotes雪花 - 双引号
【发布时间】:2021-05-12 16:39:10
【问题描述】:

有时当我从雪花表中选择一列时,我需要使用双引号或者它区分大小写,但在其他情况下,它不是。

我是 Snowflake 的新手。

  1. 为什么有些列会区分大小写?
  2. 当我在 select 语句中使用列名中的哪些字符时,我需要在双引号中列出整个列名?

【问题讨论】:

    标签: database snowflake-cloud-data-platform


    【解决方案1】:

    为什么有些列会区分大小写?

    Identifiers

    当一个标识符被双引号括起来时,它会按照输入的内容进行存储和解析,包括大小写。


    当我在 select 语句中使用列名时,哪些字符需要我用双引号列出整个列名?

    [A-Za-z_0-9$] 之外的所有内容或需要区分大小写的内容都需要使用" 引用

    不带引号的对象标识符:

    • 以字母(A-Z、a-z)或下划线(“_”)开头。

    • 仅包含字母、下划线、十进制数字 (0-9) 和美元符号 (“$”)。

    • 不区分大小写。

    【讨论】:

    • 在使用信息模式时如何修改 where 子句以搜索 [A-Za-z_0-9%] 之外的列?
    • 你可以使用WHERE REGEXP_LIKE(col, '.*[^A-Za-z_0-9].*')
    • 最后一个问题,REGEXP和REGEXP_LIKE有区别吗?我看不出有什么不同。
    • REGEXP_LIKE 有第三个参数:parameters 作为可选
    • 这回答了我所有的问题。谢谢!
    【解决方案2】:

    为什么有些列会区分大小写?

    • 某些列名在从数据源系统提取时按原样存储,使用双引号可以让我们在不更改原始名称映射的情况下提取它们。

    当我在 select 语句中使用列名时,哪些字符需要我用双引号列出整个列名?

    • 当您有专有名词或特殊字符、列名或列名中的空格时,您需要用双引号将它们转义

    当我们只使用没有特殊字符或空格的大写字母时,我们在 select 语句中引用它们时不需要使用双引号,但这可能与源系统中的原始列名不同。

    【讨论】:

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