4

2 番目の文字列内で 1 つの文字列を検索し、場所のインデックスを返す関数が BigQuery クエリ リファレンスに見つかりませんでした。他の SQL ダイアレクトの instr() のようなもの。これを達成するための代替手段または技術はありますか?

例: 「abcdef」の「de」を調べると、4 が返されます。

4

4 に答える 4

6

これを行う 1 つの方法は、正規表現の抽出を使用することです (こちらのリファレンスを参照してください)。

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   
于 2013-04-23T16:45:06.170 に答える
2

従来の SQL INSTR(str1,str2) 関数は、「文字列が最初に出現した位置の 1 から始まるインデックスを返します。」それでうまくいくはずです。

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

于 2018-01-10T17:39:47.477 に答える