在BigQuery中使用标准SQL中的权限

时间:2018-06-15 16:08:09

标签: sql google-bigquery

在BigQuery的标准SQL中运行以下代码时,我收到错误说明

#standardSQL
UPDATE dataset.dataset
SET New_column = RIGHT(link_id, LEN(link_id) - 3)
WHERE TRUE


Error: Syntax error: Unexpected keyword RIGHT at [8:18]

4 个答案:

答案 0 :(得分:3)

您可以改为使用substr()

. . .
set New_column = substr(link_id, 4)

答案 1 :(得分:1)

您应该使用SUBSTR(value, position\[, length\]) - BigQuery Standard SQL中没有函数RIGHT()

在您的特定情况下,它可以像SUBSTR(link_id, 4)

一样简单

与此同时,我不确定New_column你的意思 - 但你必须存在对表使用DML的更新

所以你最后的陈述将是

#standardSQL
UPDATE dataset.dataset
SET New_column = SUBSTR(link_id, 4)
WHERE TRUE

答案 2 :(得分:1)

正则表达式替代方案是REGEXP_REPLACE(name, r'^.{3}', '')

例如,在美国结束姓名的最佳途径:

SELECT REGEXP_REPLACE(name, r'^.{3}', '') letters, SUM(number) c
  , ANY_VALUE(name) for_example
FROM `bigquery-public-data.usa_names.usa_1910_current`
WHERE LENGTH(name)>5
GROUP BY 1
ORDER BY 2 DESC
LIMIT 30

enter image description here

答案 3 :(得分:0)

我在这里没有看到BigQuery中任何实际的RIGHT函数模拟器的答案。我需要一个,所以我建造了一个(我从@Felipe Hoffa尝试中得到灵感):

DECLARE address STRING;

SET address = '99999 SOME RANDOM ADDRESS, NY 08057';

SELECT
  REGEXP_EXTRACT(address, r'.{5}$') AS zipcode
  --this is equivalent to RIGHT(address, 5)