【问题标题】:How to query a column named "OR" in BigQuery?如何在 BigQuery 中查询名为“OR”的列?
【发布时间】:2017-02-17 19:28:44
【问题描述】:

不幸的是,我们有一个表,其中的一列已写入字段名称为“OR”。

如果我们尝试查询这个表 - “SELECT OR FROM etc.”我们得到一个错误,因为 OR 是一个保留字。

我们如何使用 BigQuery 的旧版 SQL 查询来查询该列? (我们需要该列而不是其他列。)

我们认为我们可以使用“SELECT *”和 BigQuery 的“排除”功能,但它不是旧版 SQL 的一部分,因此我们无法使用它。其他想法?

【问题讨论】:

    标签: mysql sql google-bigquery


    【解决方案1】:

    我们为此找到了another SO answer - 除非您需要在他们描述的内容之外做一些额外的事情。您不能只在名称中添加括号 - 您还需要给它一个新的列名。

    答案是这样查询:

    SELECT [OR] AS new_column_name FROM ...
    

    【讨论】:

      【解决方案2】:

      我知道您正在使用旧版 SQL 寻找答案(并且您找到了使用括号语法的答案),但对于未来的读者,orand 等是查询结果的有效列名standard SQL。以下查询不会返回错误,例如:

      WITH T AS (
        SELECT
          1 AS `or`,
          2 AS `and`
      )
      SELECT * FROM T;
      

      【讨论】:

        【解决方案3】:

        我在查询 Hacker News 数据集时遇到了这个问题。看来作者添加了一个“by”列because they were replicating the API response keys。但是查询起来比较麻烦,not best practice in database design

        我试过括号:

        SELECT
           [by] as author_name
        FROM
           `bigquery-public-data.hacker_news.full`
        LIMIT
           1000
        

        但收到以下错误:

        Syntax error: Unexpected keyword BY at [2:4]
        

        这是一个在 BigQuery 中使用标准 SQL 方言处理 Hacker News 数据集的查询:

        SELECT
          b.by as author_name
        FROM
          `bigquery-public-data.hacker_news.full` as b
        LIMIT
          1000
        

        【讨论】:

          猜你喜欢
          • 2012-07-05
          • 2021-10-10
          • 2022-11-23
          • 1970-01-01
          • 2017-07-26
          • 2018-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多