查找BigQuery中另一个字符串中的一个字符串的位置

问题描述:

我在BigQuery查询引用中找不到一个函数,该函数在第二个字符串中查找一个字符串并返回该位置的索引。类似于其他SQL方言中的instr()。有没有替代品或任何技术来实现这一目标?查找BigQuery中另一个字符串中的一个字符串的位置

例如:展望 “德” 在 “ABCDEF” 将返回4.你可以做

的一种方式,这是用正则表达式提取物(see reference here):

SELECT 
    title, LENGTH(REGEXP_EXTRACT(title, r'^(.*)def.*')) + 1 AS location_of_fragment 
FROM 
    [publicdata:samples.wikipedia] 
WHERE 
    REGEXP_MATCH(title, r'^(.*)def.*') 
LIMIT 10; 

返回:

Row title location_of_fragment  
1 Austrian air defense 14 
2 Talk:Interface defeat 16 
3 High-definition television 6  
4 Talk:IAU definition of planet 10 
5 Wikipedia:Articles for deletion/Culture defines politics 41 
6 Wikipedia:WikiProject Spam/LinkReports/defenders.org 40 
7 Adenine phosphoribosyltransferase deficiency 35 
8 Stay-at-home defenceman 14 
9 Manganese deficiency (plant) 11 
10 High-definition television 6 

传统SQL INSTR(str1,str2)函数“返回第一次出现字符串的基于1的索引”。所以这应该适合你。

https://cloud.google.com/bigquery/docs/reference/legacy-sql

+0

如果你正在寻找的标准配置SQL,然后STRPOS(字符串,字符串)“返回字符串内子第一次出现的1开始的索引。返回值为0,子未找到”。 https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#strpos – 2018-01-10 21:00:07