我在BigQuery查詢引用中找不到一個函數,該函數在第二個字符串中查找一個字符串並返回該位置的索引。類似於其他SQL方言中的instr()。有沒有替代品或任何技術來實現這一目標?查找BigQuery中另一個字符串中的一個字符串的位置
例如:展望 「德」 在 「ABCDEF」 將返回4.你可以做
我在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