繁体   English   中英

如何在BigQuery中查询名为“ OR”的列?

[英]How to query a column named “OR” in BigQuery?

不幸的是,我们有一个表,该表的列的字段名称为“ OR”。

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

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

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

查询Hacker News数据集时遇到了这个问题。 作者似乎添加了“ by”列, 因为他们正在复制API响应键 但是,这很难查询, 也不是数据库设计中的最佳实践

我尝试了括号:

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

但收到以下错误:

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

以下是适用于使用标准SQL方言的BigQuery中的Hacker News数据集的查询:

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

我们为此找到了另一个SO答案 -除了您需要做的以外,他们还需要做其他一些事情。 您不能只在名称中添加方括号-您还需要为其指定新的列名称。

答案是这样查询:

SELECT [OR] AS new_column_name FROM ...

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM