请帮我 regexp_substr in snowflake
Please help me with regexp_substr in snowflake
下面的 snowflake 中是基于 >> 分隔字符串的正则表达式,但是当数据带有 space 时,它并没有这样做,我的意思是它取部分值而不是竞争值
SELECT replace(REGEXP_SUBSTR( 'test1 >> test2 >> test3','([^>]*)([[:space:]]>>[[:space:]]|$)', 1,1 ) , ' >> ','') as test;
SELECT replace(REGEXP_SUBSTR( 'test1 >> test2 >> test3','\w+([[:space:]]>>[[:space:]]|$)', 1,1) , ' >> ','') as test;
我有这样的数据
'test value >> test1 >> test2'
但是上面的正则表达式只是给出了价值,但我想要完整的 'test value' 谁能帮我解决这个问题?
为什么不使用 SPLIT 或 SPLIT_PART 函数?对于您要实现的目标,使用正则表达式似乎不必要地复杂
我假设你想拆分上面的字符串,分隔符是“>>”?
那你就可以轻松使用了
- 创建具有不同“部分”的数组的拆分函数(上面已经提到)https://docs.snowflake.com/en/sql-reference/functions/split.html
- 接收某部分的split_part函数(上面已经提到)https://docs.snowflake.com/en/sql-reference/functions/split_part.html
- split_to_table函数
https://docs.snowflake.com/en/sql-reference/functions/split_to_table.html
(编辑:只是想向您发送对文档的引用)
SPLIT_PART 比正则表达式更容易使用。这是给您带来麻烦的示例:
WITH X AS
(SELECT 'test value >> test1 >> test2' as string_to_split)
SELECT
SPLIT_PART(string_to_split, ' >> ', 1)
, SPLIT_PART(string_to_split, ' >> ', 2)
, SPLIT_PART(string_to_split, ' >> ', 3)
FROM X;
下面的 snowflake 中是基于 >> 分隔字符串的正则表达式,但是当数据带有 space 时,它并没有这样做,我的意思是它取部分值而不是竞争值
SELECT replace(REGEXP_SUBSTR( 'test1 >> test2 >> test3','([^>]*)([[:space:]]>>[[:space:]]|$)', 1,1 ) , ' >> ','') as test;
SELECT replace(REGEXP_SUBSTR( 'test1 >> test2 >> test3','\w+([[:space:]]>>[[:space:]]|$)', 1,1) , ' >> ','') as test;
我有这样的数据 'test value >> test1 >> test2' 但是上面的正则表达式只是给出了价值,但我想要完整的 'test value' 谁能帮我解决这个问题?
为什么不使用 SPLIT 或 SPLIT_PART 函数?对于您要实现的目标,使用正则表达式似乎不必要地复杂
我假设你想拆分上面的字符串,分隔符是“>>”?
那你就可以轻松使用了
- 创建具有不同“部分”的数组的拆分函数(上面已经提到)https://docs.snowflake.com/en/sql-reference/functions/split.html
- 接收某部分的split_part函数(上面已经提到)https://docs.snowflake.com/en/sql-reference/functions/split_part.html
- split_to_table函数 https://docs.snowflake.com/en/sql-reference/functions/split_to_table.html
(编辑:只是想向您发送对文档的引用)
SPLIT_PART 比正则表达式更容易使用。这是给您带来麻烦的示例:
WITH X AS
(SELECT 'test value >> test1 >> test2' as string_to_split)
SELECT
SPLIT_PART(string_to_split, ' >> ', 1)
, SPLIT_PART(string_to_split, ' >> ', 2)
, SPLIT_PART(string_to_split, ' >> ', 3)
FROM X;