首页 > 解决方案 > 将 Oracle 查询转换为雪花

问题描述

我在将查询从 Oracle 转换为雪花时遇到问题。你能帮忙吗?

示例 Oracle 查询:replace(REGEXP_SUBSTR( col_name,'(.*?)([[:space:]]>>[[:space:]]|$)', 1,1 ) , '>> ','' ) 作为测试

标签: snowflake-cloud-data-platform

解决方案


在处理正则表达式的 (.*?) 部分时,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”)。


推荐阅读