2 番目の文字列内で 1 つの文字列を検索し、場所のインデックスを返す関数が BigQuery クエリ リファレンスに見つかりませんでした。他の SQL ダイアレクトの instr() のようなもの。これを達成するための代替手段または技術はありますか?
例: 「abcdef」の「de」を調べると、4 が返されます。
2 番目の文字列内で 1 つの文字列を検索し、場所のインデックスを返す関数が BigQuery クエリ リファレンスに見つかりませんでした。他の SQL ダイアレクトの instr() のようなもの。これを達成するための代替手段または技術はありますか?
例: 「abcdef」の「de」を調べると、4 が返されます。
これを行う 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
従来の SQL INSTR(str1,str2) 関数は、「文字列が最初に出現した位置の 1 から始まるインデックスを返します。」それでうまくいくはずです。