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