繁体   English   中英

在 BigQuery 的标准 SQL 中使用权限

[英]Use of right in standard SQL in 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]

您可以使用substr()代替:

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

正则表达式替代方案是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

在此处输入图片说明

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

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

同时,我不确定你New_column是什么意思 - 但它必须存在才能对表使用 DML 的 UPDATE

所以你的最终声明将是

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

我在这里没有看到任何答案是 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)

暂无
暂无

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

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