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

时间:2016-10-09 05:13:26

标签: mysql sql google-bigquery

我们遗憾的是,我们有一个表格,其中的列已经用字段名称“OR”编写。

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

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

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

3 个答案:

答案 0 :(得分:2)

查询Hacker News数据集时遇到了这个问题。看来作者添加了一个“依据”列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]

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

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

答案 1 :(得分:0)

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

答案是这样查询:

SELECT [OR] AS new_column_name FROM ...

答案 2 :(得分:0)

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

prefix