標準SQLでNTH関数は使用できないため別の方法で解決できないか試してみた。
やりたいこと
文字列を指定の文字列ごとにSPLITし、分割した値の3つ目のみをSELECTする。
SPLIT関数はレガシーSQL同様に使用可能
テストデータを作成する。
WITH TARGETRANGE AS (
SELECT
'aaa_bbb_ccc_ddd_eee' AS teststr
)
teststr
を引数とし、delimiter
にアンダースコアを指定し分割する。
SELECT
split((select teststr from TARGETRANGE), '_')
今回は配列の3つ目のみを選択したいため、SAFE_OFFSET
またはSAFE_ORDINAL
で配列位置を指定する。
SAFE_OFFSET
:0を始めとする
SAFE_ORDINAL
:1を始めとする
SELECT
split((select teststr from TARGETRANGE), '_')[OFFSET(2)] as a
文字列ccc
だけを取得できた。