在Bigquery中找到一个字符串在另一个字符串中的位置

use*_*402 2 google-bigquery

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

例如:在“ abcdef”中查看“ de”将返回4。

s2t*_*2t2 7

旧答案现已弃用,@carlos 答案有效:

STRPOS(string, substring) 
Run Code Online (Sandbox Code Playgroud)


Mic*_*hri 5

实现此目的的一种方法是使用正则表达式提取(请参见此处的参考资料):

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;
Run Code Online (Sandbox Code Playgroud)

返回值:

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   
Run Code Online (Sandbox Code Playgroud)