可以使用内置函数SPLIT和UNNEST来解决这个问题。SPLIT函数将字段中的字符串按照指定的分隔符拆分成数组,UNNEST函数将数组展开成行,然后可以使用ARRAY_POSITION函数获取字符串在数组中的位置。以下是示例代码:
SELECT field, ARRAY_POSITION(split_field, 'search_string') AS string_position
FROM (
SELECT field, SPLIT(field, '-') AS split_field
FROM project.dataset.table
)
WHERE string_position > 0;
这将返回一个包含原始字段和字符串位置的表,其中'search_string'是要查找的字符串,'-'是分隔符。需要注意的是,这里使用内部子查询来执行SPLIT函数,并将结果存储为split_field数组,然后在外部查询中使用UNNEST函数来展开数组,并使用ARRAY_POSITION函数通过字符串位置进行筛选。