在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]
答案 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
答案 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)