【问题标题】:Convert Oracle query to snowflake将 Oracle 查询转换为雪花
【发布时间】:2020-03-04 03:33:39
【问题描述】:

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

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

【问题讨论】:

  • 您能否发布示例输入和预期输出。因为'abc >> ' as con_name 似乎对我有用,所以我不确定你认为应该工作但不工作的你有什么..
  • 欢迎来到 SO!我认为您可以通过minimal reproducible example提高获得答案的机会@
  • 您能否分享您的示例 oracle 输入。
  • 你想要第一个字段? select REGEXP_SUBSTR('test1 >> test2 >> test3' , '[^>>]+' ,1) as val;

标签: snowflake-cloud-data-platform


【解决方案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”)。

【讨论】:

  • 谢谢哥们,这符合我的预期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2021-08-31
  • 2022-07-18
  • 1970-01-01
  • 2021-03-19
  • 2020-10-19
相关资源
最近更新 更多