将查询从Oracle转换为雪花时,我遇到了一个问题。你能帮忙吗?
示例Oracle查询: 替换(REGEXP_SUBSTR(col_name,'(。*?)([[[:space:]] >> [[:: space:]] | $)',1,1),'>>','')作为测试< / p>
答案 0 :(得分:1)
在处理(。*?)正则表达式部分时,Snowflake的行为似乎有所不同。解决方法是,您可以使用[^>] *或\ w +代替(。*?):
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;
这些结果应与Oracle的REGEXP_SUBSTR给出相同的结果(“ test1”)。