以下是带有特殊字符的长字符串"»"的示例代码。我需要在第一个和第三个特殊字符(»(之前拉出字符串。
with test as (
select 'AA»BB»CC»DD»EE»FF' string union all
select 'ZZ»XX»RR»PP»EE»FF' )
SELECT REGEXP_EXTRACT(string, r"([^»]*)") AS string_1 from test
使用代码我可以提取字符串的第一部分(即" aa"one_answers" zz"(的正则条件。但是,是否有任何方法可以在第三个特殊字符"»"之前提取字母,其中预期的输出应为" cc"one_answers" rr"
感谢您的帮助
您可以使用 SPLIT
而不是正则是:
with test as (
select 'AA»BB»CC»DD»EE»FF' string union all
select 'ZZ»XX»RR»PP»EE»FF'
)
SELECT SPLIT(string, '»')[OFFSET(2)] AS string_1 from test
这将返回"CC"
和"RR"
作为输出。
作为替代
#standardSQL
WITH test AS (
SELECT 'AA»BB»CC»DD»EE»FF' str UNION ALL
SELECT 'ZZ»XX»RR»PP»EE»FF'
)
SELECT code
FROM test, UNNEST(SPLIT(str, '»')) code WITH OFFSET pos
WHERE pos = 2
结果为
Row code
1 CC
2 RR